Part Number Hot Search : 
C3121 1N5352B EFM303 4N60F UC2909Q AQW212 AD7147 HC132
Product Description
Full Text Search
 

To Download S3CB519 Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
 22-S3-CB519-032004
USER'S MANUAL
S3CB519 8-Bit CMOS Microcontroller Revision 2
S3CB519
8-BIT CMOS MICROCONTROLLERS USER'S MANUAL
Revision 2
Important Notice
The information in this publication has been carefully checked and is believed to be entirely accurate at the time of publication. Samsung assumes no responsibility, however, for possible errors or omissions, or for any consequences resulting from the use of the information contained herein. Samsung reserves the right to make changes in its products or product specifications with the intent to improve function or design at any time and without notice and is not required to update this documentation to reflect such changes. This publication does not convey to a purchaser of semiconductor devices described herein any license under the patent rights of Samsung or others. Samsung makes no warranty, representation, or guarantee regarding the suitability of its products for any particular purpose, nor does Samsung assume any liability arising out of the application or use of any product or circuit and specifically disclaims any and all liability, including without limitation any consequential or incidental damages. "Typical" parameters can and do vary in different applications. All operating parameters, including "Typicals" must be validated for each customer application by the customer's technical experts. Samsung products are not designed, intended, or authorized for use as components in systems intended for surgical implant into the body, for other applications intended to support or sustain life, or for any other application in which the failure of the Samsung product could create a situation where personal injury or death may occur. Should the Buyer purchase or use a Samsung product for any such unintended or unauthorized application, the Buyer shall indemnify and hold Samsung and its officers, employees, subsidiaries, affiliates, and distributors harmless against all claims, costs, damages, expenses, and reasonable attorney fees arising out of, either directly or indirectly, any claim of personal injury or death that may be associated with such unintended or unauthorized use, even if such claim alleges that Samsung was negligent regarding the design or manufacture of said product.
S3CB519 8-Bit CMOS Microcontrollers User's Manual, Revision 2 Publication Number: 22-S3-CB519-042004 (c) 2004 Samsung Electronics All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electric or mechanical, by photocopying, recording, or otherwise, without the prior written consent of Samsung Electronics. Samsung Electronics' microcontroller business has been awarded full ISO-14001 certification (BSI Certificate No. FM24653). All semiconductor products are designed and manufactured in accordance with the highest quality standards and objectives. Samsung Electronics Co., Ltd. San #24 Nongseo-Ri, Kiheung-Eup Yongin-City, Kyunggi-Do, Korea C.P.O. Box #37, Suwon 449-900 TEL: (82)-(331)-209-1907 FAX: (82)-(331)-209-1899 Home-Page URL: Http://www.samsungsemi.com Printed in the Republic of Korea
Preface
The S3CB519 Microcontroller User's Manual is designed for application designers and programmers who are using the S3CB519 microcontroller for application development. It is organized in two main parts: Part I Programming Model Part II Hardware Descriptions
Part I contains software-related information to familiarize you with the microcontroller's architecture, programming model, instruction set, and interrupt structure. It has nine chapters: Chapter 1 Chapter 2 Chapter 3 Chapter 4 Product Overview Address Spaces Registers Memory Map Chapter 5 Chapter 6 Chapter 7 Chapter 8 Hardware Stack Exceptions Coprocessor Interface Instruction Set
Chapter 1, "Product Overview," is a high-level introduction to S3CB519 with general product descriptions, as well as detailed information about individual pin characteristics and pin circuit types. Chapter 2, "Address Spaces," describes program and data memory spaces. Chapter 2 also describes ROM code option. Chapter 3, "Register," describes the special registers. Chapter 4, "Memory Map," describes the internal register file. Chapter 5, "Hardware Stack," describes the S3CB519 hardware stack structure in detail. Chapter 6, "Exceptions," describes the S3CB519 exception structure in detail. A basic familiarity with the information in Part I will help you to understand the hardware module descriptions in Part II. If you are not yet familiar with the S3CB-series microcontroller family and are reading this manual for the first time, we recommend that you first read Chapters 1-3 carefully. Then, briefly look over the detailed information in Chapters 4, 5, 6, 7, 8, and 9. Later, you can reference the information in Part I as necessary. Part II "Hardware descriptions," has detailed information about specific hardware components of the S3CB519 microcontroller. Also included in Part II are electrical, mechanical. It has 16 chapters: Chapter 9 Chapter 10 Chapter 11 Chapter 12 Chapter 13 Chapter 14 Chapter 15 Chapter 16 Chapter 17 Clock Circuit nRESET and Power-Down I/O Ports Basic Timer/Watchdog Timer Watch Timer 16-Bit Timer (8-Bit Timer A & B) 8-Bit Timer (Timer 0) Serial I/O Interface Battery Level Detector Chapter 18 Chapter 19 Chapter 20 Chapter 21 Chapter 22 Chapter 23 Chapter 24 LCD Controller/Driver A/D Converter D/A Converter MAC 816 Electrical Data Mechanical Data Development Tools
Chapter 21, "MAC816" describes the MAC816 structure in detail, as well as instructions. Two order forms are included at the back of this manual to facilitate customer order for S3CB519 microcontrollers: the Mask ROM Order Form, and the Mask Option Selection Form. You can photocopy these forms, fill them out, and then forward them to your local Samsung Sales Representative.
S3CB519 MICROCONTROLLER
iii
Table of Contents
Part I -- Programming Model
Chapter 1 Product Overview
Overview .............................................................................................................................................1-1 Features .............................................................................................................................................1-5 Pin Assignment...................................................................................................................................1-7 I/O Pin Description ..............................................................................................................................1-8 Pin Circuit Diagrams............................................................................................................................1-10
Chapter 2
Address Spaces
Overview .............................................................................................................................................2-1 Program Memory (ROM) ......................................................................................................................2-2 ROM Code Option (RCOD_OPT)...........................................................................................................2-5 Data Memory Organization...................................................................................................................2-7
Chapter 3
Registers
Overview .............................................................................................................................................3-1 Index Registers: IDH, IDL0 and IDL1..............................................................................................3-2 Link Registers: ILX, ILH and ILL ....................................................................................................3-2 Status Register 0: SR0 ................................................................................................................3-3 Status Register 1: SR1 ................................................................................................................3-4
Chapter 4
Memory Map
Overview .............................................................................................................................................4-1
Chapter 5
Hardware Stack
Overview .............................................................................................................................................5-1
S3CB519 MICROCONTROLLER
v
Table of Contents
Chapter 6 Exceptions
(Continued)
Overview .............................................................................................................................................6-1 Hardware Reset...........................................................................................................................6-1 NMI Exception (Edge Sensitive)....................................................................................................6-2 IRQ[0] Exception (Level-Sensitive).................................................................................................6-2 IRQ[1] Exception (Level-Sensitive).................................................................................................6-2 Hardware Stack Full Exception.....................................................................................................6-2 Break Exception..........................................................................................................................6-2 Exceptions (or Interrupts).............................................................................................................6-3 Interrupt Mask Registers ..............................................................................................................6-5 Interrupt Priority Register..............................................................................................................6-6
Chapter 7
Coprocessor Interface
Overview .............................................................................................................................................7-1
Chapter 8
Instruction Set
Overview .............................................................................................................................................8-1 Glossary.....................................................................................................................................8-1 Instruction Set Map .............................................................................................................................8-2 Quick Reference..................................................................................................................................8-9 Instruction Group Summary ..................................................................................................................8-12 ALU Instructions..........................................................................................................................8-12 Shift/Rotate Instructions ...............................................................................................................8-16 Load Instructions .........................................................................................................................8-18 Branch Instructions......................................................................................................................8-21 Bit Manipulation Instructions.........................................................................................................8-25 Miscellaneous Instruction.............................................................................................................8-26 Pseudo Instructions .............................................................................................................................8-29
vi
S3CB519 MICROCONTROLLER
Table of Contents
(Continued)
Part II Hardware Descriptions
Chapter 9 Clock Circuit
Overview .............................................................................................................................................9-1 System Clock Circuit...................................................................................................................9-1
Chapter 10
nRESET and Power-Down
Overview .............................................................................................................................................10-1
Chapter 11
I/O Ports
Overview .............................................................................................................................................11-1 Port 0.........................................................................................................................................11-1 Port 1.........................................................................................................................................11-4 Port 2.........................................................................................................................................11-5 Port 3.........................................................................................................................................11-5 Port 4.........................................................................................................................................11-6 Port 5.........................................................................................................................................11-7
Chapter 12
Basic Timer
Overview .............................................................................................................................................12-1 Block Diagram ....................................................................................................................................12-2
Chapter 13
Watch Timer
Overview .............................................................................................................................................13-1 Watch Timer Circuit Diagram........................................................................................................13-2
Chapter 14
16-Bit Timer (8-Bit Timer A & B)
Overview .............................................................................................................................................14-1 Interval timer function ...................................................................................................................14-1
S3CB519 MICROCONTROLLER
vii
Table of Contents
Chapter 15 8-Bit Timer (Timer 0)
(Continued)
Overview .........................................................................................................................................15-1 Function Description........................................................................................................................15-2 Timer 0 Control Register (T0CON) .....................................................................................................15-3 Block Diagram ................................................................................................................................15-4
Chapter 16
Serial I/O Interface
Overview .............................................................................................................................................16-1 Programming Procedure...............................................................................................................16-1 SIO Control Register (SIOCON) ....................................................................................................16-2 SIO Pre-Scaler Register (SIOPS)..................................................................................................16-3 Block Diagram ....................................................................................................................................16-3 Serial I/O Timing Diagrams...........................................................................................................16-4
Chapter 17
Battery Level Detector
Overview .............................................................................................................................................17-1
Chapter 18
LCD Controller/Driver
Overview .............................................................................................................................................18-1 LCD RAM Address Area ..............................................................................................................18-1 LCD RAM (RAM Bank 12)............................................................................................................18-1 LCD Control Register (LCON) .......................................................................................................18-2 LCD Voltage Dividing Resistors.....................................................................................................18-2 LCD Mode Register (LMOD) .........................................................................................................18-3 LCD Contrast Control Register (LCNST).........................................................................................18-4 LCD Key Scan ............................................................................................................................18-8
Chapter 19
A/D Converter
Overview .............................................................................................................................................19-1 Features .............................................................................................................................................19-1 A/D Converter Control Register (ADCON).......................................................................................19-2
Chapter 20
D/A Converter
Overview .............................................................................................................................................20-1 D/A Converter Data Register (DADATA).........................................................................................20-3 D/A Converter Control Register (DACON).......................................................................................20-3
viii
S3CB519 MICROCONTROLLER
Table of Contents
Chapter 21 MAC816
(Concluded)
MAC816 Architecture Overview .............................................................................................................21-1 Programmer's Model............................................................................................................................21-3 Data Memory Accesses...............................................................................................................21-3 Computation Unit.........................................................................................................................21-7 Status Registers .........................................................................................................................21-9 Host Interface..............................................................................................................................21-11 Instruction Set.....................................................................................................................................21-14 Glossary.....................................................................................................................................21-14 Instruction Encoding ....................................................................................................................21-20 Quick Reference..........................................................................................................................21-22 MAC816 Instruction Description....................................................................................................21-25
Chapter 22
Electrical Data
Overview............................................................................................................................................22-1
Chapter 23
Mechanical Data
Overview .............................................................................................................................................23-1
Chapter 24
Development Tools
Overview .............................................................................................................................................24-1 CALMSHINE: IDE(Integrated Development Environment).....................................................................24-1 Invisible MDS: In-Circuit Emulator .....................................................................................................24-1 CALMRISC8 C-Compiler: CALM8CC .................................................................................................24-1 CALMRISC8 Relocatable Assembler: CALM8ASM.............................................................................24-1 CALMRISC8 Linker: CALM8LINK ......................................................................................................24-1 Emulation Probe Board Configuration ....................................................................................................24-2 External Event Input Headers (JP4) ...................................................................................................24-3 Event Match Output Headers (JP9) ...................................................................................................24-3 External Break Input Headers (TP4) ..................................................................................................24-3 A/D Converter Function Block...............................................................................................................24-4 Communication Selection.................................................................................................................24-5 Use Clock Setting for External Clock Mode........................................................................................24-5 Sub Clock Setting ...........................................................................................................................24-5 CN1, CN2 Pin Assignment ...............................................................................................................24-6
S3CB519 MICROCONTROLLER
ix
List of Figures
Figure Number 1-1 1-2 1-3 1-4 1-5 1-6 1-7 1-8 1-9 1-10 1-11 1-12 1-13 1-14 2-1 2-2 2-3 2-4 2-5 2-6 3-1 4-1 5-1 5-2 5-3 5-4 5-5 Title Page Number
Top Block Diagram ..............................................................................................1-2 CalmRISC Pipeline Diagram .................................................................................1-3 CalmRISC Pipeline Stream Diagram......................................................................1-4 S3CB519 Block Diagram......................................................................................1-6 S3CB519 Pin Assignment Diagram (100-QFP).......................................................1-7 S3CB519 Pin Assignment Diagram (100-TQFP).....................................................1-8 Pin Circuit Type B ...............................................................................................1-11 Pin Circuit Type C ...............................................................................................1-11 Pin Circuit Type E-2.............................................................................................1-11 Pin Circuit Type D-2.............................................................................................1-11 Pin Circuit Type H-29...........................................................................................1-12 Pin Circuit Type H-35...........................................................................................1-12 Pin Circuit Type H-34...........................................................................................1-12 Pin Circuit Type F-10 ...........................................................................................1-12 Program Memory Address Space .........................................................................2-2 Relative Jump Around Page Boundary ...................................................................2-3 Program Memory Layout ......................................................................................2-4 ROM Code Option (RCOD_OPT)...........................................................................2-6 Data Memory Map...............................................................................................2-7 S3CB519 Data Memory Map ................................................................................2-8 Bank Selection by Setting of GRB Bits and IDB Bit ................................................3-3 Control Register Area...........................................................................................4-1 Hardware Stack...................................................................................................5-1 Even and Odd Bank Selection Example.................................................................5-2 Stack Operation with PC [19:0].............................................................................5-3 Stack Operation with Registers.............................................................................5-4 Stack Overflow ....................................................................................................5-5
S3CB519 MICROCONTROLLER
xi
List of Figures (Continued)
Figure Number 6-1 6-2 6-3 6-4 7-1 7-2 9-1 9-2 9-3 11-1 11-2 11-3 11-4 11-5 11-6 11-7 11-8 11-9 11-10 12-1 12-2 13-1 14-1 14-2 14-3 15-1 15-2 16-1 16-2 16-3 16-4 16-5 17-1 17-2 Title Page Number
Interrupt Structure................................................................................................6-3 Interrupt Structure................................................................................................6-4 Interrupt Mask Register........................................................................................6-5 Interrupt Priority Register......................................................................................6-6 Coprocessor Interface Diagram .............................................................................7-1 Coprocessor Instruction Pipeline...........................................................................7-3 System Clock Circuit Diagram..............................................................................9-2 Power Control Register (PCON) ............................................................................9-3 Oscillator Control Register (OSCCON)...................................................................9-3 Port 0 Low-byte Control Register (P0CONL)...........................................................11-1 Port 0 High-byte Control Register (P0CONH)..........................................................11-2 Port 0 Interrupt Control Register (P0INT) ................................................................11-2 Port 0 Interrupt Edge Control Register (P0EDGE)...................................................11-3 Port 1 Control Register (P1CON)...........................................................................11-4 Port 1 Interrupt Control Register (P1INT) ................................................................11-4 Port 2 Control Register (P2CON)...........................................................................11-5 Port 3 Control Register (P3CON)...........................................................................11-5 Port 4 Control Register (P4CON)...........................................................................11-6 Port 5 Control Register (P5CON)...........................................................................11-7 Watchdog Timer Control Register (WDTCON) ........................................................12-1 Basic Timer & Watchdog Timer Functional Block Diagram ......................................12-2 Watch Timer Circuit Diagram................................................................................13-2 Timer A Control Register (TACON) ........................................................................14-1 Timer B Control Register (TBCON) ........................................................................14-2 Timer A, B Function Block Diagram ......................................................................14-3 Timer 0 Control Register (T0CON) .........................................................................15-3 Timer 0 Functional Block Diagram.........................................................................15-4 Serial I/O Control Register (SIOCON) ....................................................................16-2 SIO Pre-scaler Register (SIOPS) ..........................................................................16-3 SIO Functional Block Diagram..............................................................................16-3 Serial I/O Timing in Transmit/Receive Mode (Tx at falling, SIOCON.4 = 0).................16-4 Serial I/O Timing in Transmit/Receive Mode (Tx at rising, SIOCON.4 = 1) .................16-4 Voltage Level Detection Circuit .............................................................................17-1 Battery Level Detector Control Register (BLDCON) .................................................17-2
xii
S3CB519 MICROCONTROLLER
List of Figures (Concluded)
Figure Number 18-1 18-2 18-3 18-4 18-5 18-6 18-7 18-8 19-1 19-2 19-3 20-1 20-2 20-3 21-1 21-2 21-3 21-4 21-5 21-6 22-1 22-2 22-3 22-4 22-5 22-6 22-7 22-8 23-1 23-2 24-1 24-2 Title Page Number
LCD Display Data RAM Organization ....................................................................18-1 LCD Control Register (LCON) ...............................................................................18-2 Internal Voltage Dividing Resistor Connection.........................................................18-2 LCD Mode Register (LMOD) .................................................................................18-3 LCD Contrast Register (LCNST) ............................................................................18-4 LCD Signal Waveforms (1/16 Duty, 1/5 Bias) .........................................................18-5 LCD Signal Waveforms (1/8 Duty, 1/4 Bias)...........................................................18-7 LCD Waveform when Key Strobe Signal is Active ...................................................18-9 A/DC Control Register (ADCON) ...........................................................................19-2 A/D Converter Block Diagram ...............................................................................19-3 Application Example............................................................................................19-4 D/A Converter Circuit Diagram ..............................................................................20-1 D/A Converter Timing Diagram ..............................................................................20-2 D/A Control Register (DACON) .............................................................................20-3 Top Block Diagram ..............................................................................................21-1 Data Memory Organization...................................................................................21-3 RPU (RAM Pointer Unit) Block Diagram ................................................................21-4 Computation Unit Block Diagram ..........................................................................21-7 Coprocessor Interface Diagram .............................................................................21-11 Coprocessor Instruction Pipeline...........................................................................21-13 Input Timing for External Interrupts (Port 0, Port 1)..................................................22-4 Input Timing for nRESET......................................................................................22-4 Stop Mode Release Timing When Initiated by a nRESET........................................22-5 Stop Mode(Main) Release Timing Initiated by Interrupts ..........................................22-6 Stop Mode(Sub) Release Timing Initiated by Interrupts............................................22-6 Serial Data Transfer Timing...................................................................................22-7 Clock Timing Measurement at XIN .........................................................................22-11 Operating Voltage Range .....................................................................................22-12 100-QFP-1420C Package Dimensions...................................................................23-2 100-TQFP-1414 Package Dimensions ...................................................................23-3 Emulation Probe Board Configuration ....................................................................24-2 A/D converter Function Block Diagram ..................................................................24-4
S3CB519 MICROCONTROLLER
xiii
List of Tables
Table Number 1-1 3-1 3-2 3-3 4-1 6-1 7-1 8-1 8-2 8-3 8-4 8-5 8-6 8-7 8-8 8-9 13-1 21-1 21-2 21-3 21-4 21-5 21-6 21-7 21-8 21-9 21-10 21-11 21-12 21-13 Title Page Number
S3CB519 Pin Descriptions ...................................................................................1-9 General and Special Purpose Registers.................................................................3-1 Status Register 0 Configuration.............................................................................3-3 Status Register 1: SR1 ........................................................................................3-4 Control Registers.................................................................................................4-2 Exceptions .........................................................................................................6-1 Coprocessor instructions......................................................................................7-2 Instruction Notation Conventions ...........................................................................8-1 Overall Instruction Set Map...................................................................................8-2 Instruction Encoding ............................................................................................8-4 Index Code Information ("idx") ...............................................................................8-7 Index Modification Code Information ("mod") ...........................................................8-7 Condition Code Information ("cc") ..........................................................................8-7 "ALUop1" Code Information...................................................................................8-8 "ALUop2" Code Information...................................................................................8-8 "MODop1" Code Information..................................................................................8-8 Watch Timer Control Register (WTCON): 8-Bit R/W................................................13-1 RPU(RAM Pointer Unit) Registers .........................................................................21-4 RPi register bit information ...................................................................................21-5 Coprocessor instructions......................................................................................21-12 Notation and Convention.......................................................................................21-14 MAC816 Registers ..............................................................................................21-15 Data Transfer Registers........................................................................................21-16 Memory Access Mode Information ........................................................................21-17 Condition Code Information...................................................................................21-18 Control Bit Code Information .................................................................................21-18 AU operation code information ..............................................................................21-19 Others ................................................................................................................21-19 Instruction Encoding ............................................................................................21-20 Quick Reference..................................................................................................21-22
S3CB519 MICROCONTROLLER
xv
List of Tables (Continued)
Table Number 22-1 22-2 22-3 22-4 22-5 22-6 22-7 22-8 22-9 22-10 22-11 22-12 Title Page Number
Absolute Maximum Ratings..................................................................................22-1 D.C. Electrical Characteristics..............................................................................22-1 A.C. Electrical Characteristics..............................................................................22-4 Data Retention Supply Voltage in Stop Mode.........................................................22-5 Synchronous SIO Electrical Characteristics...........................................................22-7 BLD Electrical Characteristics ..............................................................................22-8 ADC Electrical Characteristics..............................................................................22-8 DAC Electrical Characteristics..............................................................................22-9 Main Oscillator Frequency (fOSC1).........................................................................22-10 Main Oscillator Clock Stabilization Time (TST1) ......................................................22-10 Sub Oscillator Frequency (fOSC2) ..........................................................................22-11 Sub Oscillator(Crystal) Start up Time (t ST2)............................................................22-11
xvi
S3CB519 MICROCONTROLLER
List of Programming Tips
Description Chapter 2: Address Space Page Number
Using the Page Pointer for RAM clear (Page 0, Page 1)......................................................................2-5 Setting the Register Pointers ............................................................................................................2-9 Using the RPs to Calculate the Sum of a Series of Registers ..............................................................2-10 Addressing the Common Working Register Area ................................................................................2-14 Standard Stack Operations Using PUSH and POP.............................................................................2-19 Chapter 6: Exceptions
Interrupt Programming Tip 1..............................................................................................................6-7 Interrupt Programming Tip 2..............................................................................................................6-8
S3CB519 MICROCONTROLLER
xvii
List of Instruction Descriptions
Instruction Mnemonic ADC ADD AND AND SR0 BANK BITC BITR BITS BITT BMC/BMS CALL CALLS CLD CLD COM COM2 COMC COP CP CPC DEC DECC DI EI IDLE INC INCC IRET JNZD JP JR LCALL LD adr:8 Full Register Name Page Number
Add with Carry ....................................................................................................8-30 Add....................................................................................................................8-31 Bit-wise AND ......................................................................................................8-32 Bit-wise AND with SR0Call Procedure ...................................................................8-33 Bank Selection....................................................................................................8-34 Bit Complement ..................................................................................................8-35 Bit Reset ............................................................................................................8-36 Bit Set................................................................................................................8-37 Bit Test ..............................................................................................................8-38 TF bit clear/set ....................................................................................................8-39 Conditional subroutine call (Pseudo Instruction) .....................................................8-40 Call Subroutine....................................................................................................8-41 Load into Coprocessor .........................................................................................8-42 Load from Coprocessor ........................................................................................8-43 1's or Bit-wise Complement ..................................................................................8-44 2's Complement ..................................................................................................8-45 Bit-wise Complement with Carry ...........................................................................8-46 Coprocessor .......................................................................................................8-47 Compare.............................................................................................................8-48 Compare with Carry .............................................................................................8-49 Decrement ..........................................................................................................8-50 Decrement with Carry ..........................................................................................8-51 Disable Interrupt (Pseudo Instruction) ....................................................................8-52 Enable Interrupt (Pseudo Instruction) ....................................................................8-53 Idle Operation (Pseudo Instruction) .......................................................................8-54 Increment ...........................................................................................................8-55 Increment with Carry ............................................................................................8-56 Return from Interrupt Handling...............................................................................8-57 Jump Not Zero with Delay Slot ..............................................................................8-58 Conditional Jump (Pseudo Instruction) ..................................................................8-59 Conditional Jump Relative.....................................................................................8-60 Conditional Subroutine Call...................................................................................8-61 Load into Memory................................................................................................8-62
S3CB519 MICROCONTROLLER
xix
List of Instruction Descriptions (Continued)
Instruction Mnemonic LD @idm LD LD LD LD LD SPR LD SPR0 LDC LJP LLNK LNK LNKS LRET NOP OR OR SR0 POP POP PUSH RET RL RLC RR RRC SBC SL SLA SR SRA STOP SUB SWAP SYS TM XOR Full Instruction Name Page Number
Load into Memory Indexed ...................................................................................8-63 Load Register......................................................................................................8-64 Load GPR:bankd, GPR:banks ..............................................................................8-65 Load GPR, TBH/TBL............................................................................................8-66 Load TBH/TBL, GPR............................................................................................8-67 Load SPR...........................................................................................................8-68 Load SPR0 Immediate.........................................................................................8-69 Load Code ..........................................................................................................8-70 Conditional Jump.................................................................................................8-71 Linked Subroutine Call Conditional ........................................................................8-72 Linked Subroutine Call (Pseudo Instruction) ..........................................................8-73 Linked Subroutine Call .........................................................................................8-74 Return from Linked Subroutine Call .......................................................................8-75 No Operation.......................................................................................................8-76 Bit-wise OR ........................................................................................................8-77 Bit-wise OR with SR0 ..........................................................................................8-78 POP...................................................................................................................8-79 POP to Register..................................................................................................8-80 Push Register .....................................................................................................8-81 Return from Subroutine ........................................................................................8-82 Rotate Left ..........................................................................................................8-83 Rotate Left with Carry ..........................................................................................8-84 Rotate Right........................................................................................................8-85 Rotate Right with Carry ........................................................................................8-86 Subtract with Carry ..............................................................................................8-87 Shift Left .............................................................................................................8-88 Shift Left Arithmetic .............................................................................................8-89 Shift Right...........................................................................................................8-90 Shift Right Arithmetic...........................................................................................8-91 Stop Operation (Pseudo Instruction) .....................................................................8-92 Subtract .............................................................................................................8-93 Swap..................................................................................................................8-94 System ..............................................................................................................8-95 Test Multiple Bits ................................................................................................8-96 Exclusive OR ......................................................................................................8-97
xx
S3CB519 MICROCONTROLLER
S3CB519
PRODUCT OVERVIEW
1
OVERVIEW
PRODUCT OVERVIEW
The S3CB519 single-chip CMOS microcontroller is designed for high performance using Samsung's new 8-bit CPU core, CalmRISC. CalmRISC is an 8-bit low power RISC microcontroller. Its basic architecture follows Harvard style, that is, it has separate program memory and data memory. Both instruction and data can be fetched simultaneously without causing a stall, using separate paths for memory access. Represented below is the top block diagram of the CalmRISC microcontroller.
1-1
PRODUCT OVERVIEW
S3CB519
20 PA[19:0] PD[15:0] Program Memory Address Generation Unit PC[19:0] 20 8 8 HS[0] Hardware Stack TBH DO[7:0] TBL HS[15] ABUS[7:0] BBUS[7:0] DI[7:0] ALUL ALUR R0 R1 R2 ALU Flag R3 GPR
RBUS
SR1 ILX Data Memory Address Generation Unit ILH
SR0 ILL IDL0
DA[15:0]
IDH IDL1 SPR
Figure 1-1. Top Block Diagram
1-2
S3CB519
PRODUCT OVERVIEW
The CalmRISC building blocks consist of: -- An 8-bit ALU -- 16 general purpose registers (GPR) -- 11 special purpose registers (SPR) -- 16-level hardware stack -- Program memory address generation unit -- Data memory address generation unit Sixteen GPRs are grouped into four banks (Bank0 to Bank3), and each bank has four 8-bit registers (R0, R1, R2, and R3). SPRs, designed for special purposes, include status registers, link registers for branch-link instructions, and data memory index registers. The data memory address generation unit provides the data memory address (denoted as DA[15:0] in the top block diagram) for a data memory access instruction. Data memory contents are accessed through DI[7:0] for read operations and DO[7:0] for write operations. The program memory address generation unit contains a program counter, PC[19:0], and supplies the program memory address through PA[19:0] and fetches the corresponding instruction through PD[15:0] as the result of the program memory access. CalmRISC has a 16-level hardware stack for low power stack operations as well as a temporary storage area.
Instruction Fetch (IF)
Instruction Decode/ Data Memory Access (ID/MEM)
Execution/Writeback (EXE/WB)
Figure 1-2. CalmRISC Pipeline Diagram CalmRISC has a 3-stage pipeline as described below: As can be seen in the pipeline scheme, CalmRISC adopts a register-memory instruction set. In other words, data memory where R is a GPR can be one operand of an ALU instruction as shown below: The first stage (or cycle) is the Instruction fetch stage (IF for short), where the instruction pointed by the program counter, PC[19:0] , is read into the Instruction Register (IR for short). The second stage is the Instruction Decode and Data Memory Access stage (ID/MEM for short), where the fetched instruction (stored in IR) is decoded and data memory access is performed, if necessary. The final stage is the Execute and Write-back stage (EXE/WB), where the required ALU operation is executed and the result is written back into the destination registers. Since CalmRISC instructions are pipelined, the next instruction fetch is not postponed until the current instruction is completely finished but is performed immediately after completing the current instruction fetch. The pipeline stream of instructions is illustrated in the following diagram.
1-3
PRODUCT OVERVIEW
S3CB519
/1
IF /2
ID/MEM IF /3
EXE/WB ID/MEM IF /4 EXE/WB ID/MEM IF EXE/WB IF /5 ID/MEM IF /6 EXE/WB ID/MEM IF EXE/WB ID/MEM EXE/WB
Figure 1-3. CalmRISC Pipeline Stream Diagram Most CalmRISC instructions are 1-word instructions, while same branch instructions such as long "call" and "jp" instructions are 2-word instructions. In Figure 1-3, the instruction, I4, is a long branch instruction, and it takes two clock cycles to fetch the instruction. As indicated in the pipeline stream, the number of clocks per instruction (CPI) is 1 except for long branches, which take 2 clock cycles per instruction.
1-4
S3CB519
PRODUCT OVERVIEW
FEATURES
CPU
* * * *
8, 12 and 16 COM selectable 16-level contrast control Key strobe output function
8-bit CalmRISC
Coprocessor
* * *
MAC 816 8 x 16, 16 x 16 multiply and accumulation Arithmetic operation
Battery Level Detector
* *
2.4, 2.7, 3.0, 3.3, 4.0, 4.5 V detectable Internal level and/or external level selectable
Memory
* *
8-Bit Serial I/O Interface
* * *
ROM: 16K-word RAM: 3K-byte 2048 (X-memory) 1024 (Y-memory)
8-bit transmit/receive mode 8-bit receive mode LSB-first or MSB-first transmission selectable
A/D Converter I/O Pins
* * * * * *
Sigma delta ADC Linear 14-bit data (16-bit format) 256X over sampling Operation voltage: VDD = 3.0 V-5.5 V
11 I/O: not include COM/SEG 35 I/O: include COM/SEG
Power-Down
* * *
Idle mode: only CPU clock stops Stop mode: main system oscillator stops Sub-system clock stop mode
D/A Converter
* * *
8-bit resolution Regulated output voltage Operation voltage: VDD = 2.4 V-5.5 V
ROM Option
* *
Basic timer counter clock source selection reset value Watchdog timer enable/disable selection
Oscillation Sources
* * * *
Crystal, ceramic, RC for main system clock Crystal or external oscillator for subsystem clock Main system clock frequency: Max 8.2 MHz Subsystem clock frequency: 32.768 kHz
8-Bit Basic Timer
* *
Programmable interval timer 8 kinds of clock source
Watchdog Timer
*
Operating Voltage
*
System reset
2.2 V to 5.5 V
Watch Timer
* *
Operating Temperature Range
*
Real time clock or interval time measurement Buzzer function (0.5/1/2/4 kHz at 4.19 MHz OSC)
- 25 C to 85 C
Package Type
*
Timer/Counters
* *
100-QFP-1420C, 100-TQFP-1414
One 8-bit timer with PWM/Capture One 16-bit general-purpose timer/counter
LCD Controller/Driver
*
56 SEG x 16 COM terminals
1-5
PRODUCT OVERVIEW
S3CB519
XIN
XOUT
XTIN XTOUT
Main OSC
SUB OSC
WDT
Basic Timer
SIO P5.0-P5.15 Port 5 CalmRISC CPU Timer 0 P4.0-P4.7 Port 4
Timer 1
SI S0 SCK T0/T0CAP/ T0PWM T0CK
Timer A P3.0-P3.7 Port 3 Timer B Watch Timer
TACK TB
BUZ
P2.0-P2.7
Port 2
X-Memory 2048 Bytes
Y-Memory 1024 Bytes
Control Register 128 Bytes
BLD
BLD
P1.0-P1.3
Port 1 MAC 816 CODEC
AVDD AVSS ADINP ADINN ADGAIN DAOUT AVREFOUT REFH REFL
P0.0-P0.6
Port 0
COM0-COM15 LCD Driver/Controller SEG0-SEG55
Figure 1-4. S3CB519 Block Diagram
1-6
S3CB519
PRODUCT OVERVIEW
PIN ASSIGNMENT
100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81
COM8/P4.0 COM7 COM6 COM5 COM4 COM3 COM2 COM1 COM0 SEG0 SEG1 SEG2 SEG3 SEG4 SEG5 SEG6 SEG7 SEG8 SEG9 SEG10
COM9/P4.1 COM10/P4.2 COM11/P4.3 COM12/P4.4 COM13/P4.5 COM14/P4.6 COM15/P4.7 P0.0/INT0/TB P0.1/INT1/T0/T0CAP/T0PWM P0.2/INT2/T0CK/BUZ P0.3/INT3/TACK/BLD P0.4/INT4/nSCK P0.5/INT5/SO P0.6/INT6/SI VDD VSS XOUT XIN TEST XTIN XTOUT nRESET DAOUT AVDD AVSS ADINP ADINN ADGAIN AVREFOUT REFH
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51
SEG11 SEG12 SEG13 SEG14 SEG15 SEG16 SEG17 SEG18 SEG19 SEG20 SEG21 SEG22 SEG23 SEG24/P5.15 SEG25/P5.14 SEG26/P5.13 SEG27/P5.12 SEG28/P5.11 SEG29/P5.10 SEG30/P5.9 SEG31/P5.8 SEG32/P5.7 SEG33/P5.6 SEG34/P5.5 SEG35/P5.4 SEG36/P5.3 SEG37/P5.2 SEG38/P5.1 SEG39/P5.0 SEG40/P3.7
Figure 1-5. S3CB519 Pin Assignment Diagram (100-QFP)
REFL P1.0/KS0 P1.1/KS1 P1.2/KS2 P1.3/KS3 P2.0/SEG55 P2.1/SEG54 P2.2/SEG53 P2.3/SEG52 P2.4/SEG51 P2.5/SEG50 P2.6/SEG49 P2.7/SEG48 P3.0/SEG47 P3.1/SEG46 P3.2/SEG45 P3.3/SEG44 P3.4/SEG43 P3.5/SEG42 P3.6/SEG41
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
(100-QFP-1420C)
S3CB519
1-7
PRODUCT OVERVIEW
S3CB519
COM11/P4.3 COM12/P4.4 COM13/P4.5 COM14/P4.6 COM15/P4.7 P0.0/INT0/TB P0.1/INT1/T0/T0CAP/T0PWM P0.2/INT2/T0CK/BUZ P0.3/INT3/TACK/BLD P0.4/INT4/nSCK P0.5/INT5/SO P0.6/INT6/SI VDD VSS XOUT XIN TEST XTIN XTOUT nRESET DAOUT AVDD AVSS ADINP ADINN
1 2 3 4 5 6 7 8 9 10 11 (SDAT) 12 (SCLK) 13 14 15 16 17 18 19 20 21 22 23 24 25
100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51
COM10/P4.2 COM9/P4.1 COM8/P4.0 COM7 COM6 COM5 COM4 COM3 COM2 COM1 COM0 SEG0 SEG1 SEG2 SEG3 SEG4 SEG5 SEG6 SEG7 SEG8 SEG9 SEG10 SEG11 SEG12 SEG13
S3FB519
(100-TQFP-1414)
SEG14 SEG15 SEG16 SEG17 SEG18 SEG19 SEG20 SEG21 SEG22 SEG23 SEG24/P5.15 SEG25/P5.14 SEG26/P5.13 SEG27/P5.12 SEG28/P5.11 SEG29/P5.10 SEG30/P5.9 SEG31/P5.8 SEG32/P5.7 SEG33/P5.6 SEG34/P5.5 SEG35/P5.4 SEG36/P5.3 SEG37/P5.2 SEG38/P5.1
Figure 1-6. S3CB519 Pin Assignment Diagram (100-TQFP)
1-8
ADGAIN AVREFOUT REFH REFL P1.0/KS0 P1.1/KS1 P1.2/KS2 P1.3/KS3 P2.0/SEG55 P2.1/SEG54 P2.2/SEG53 P2.3/SEG52 P2.4/SEG51 P2.5/SEG50 P2.6/SEG49 P2.7/SEG48 P3.0/SEG47 P3.1/SEG46 P3.2/SEG45 P3.3/SEG44 P3.4/SEG43 P3.5/SEG42 P3.6/SEG41 P3.7/SEG40 P5.0/SEG39
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
S3CB519
PRODUCT OVERVIEW
I/O PIN DESCRIPTION
Table 1-1. S3CB519 Pin Descriptions Pin Name P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P1.0-P1.3 I/O Pin Type I/O Pin Description I/O port with bit programmable pins; Input and output modes can be selected by software; Software assignable pull-up. Alternately, P0.0-P0.6 can be used as INT0-INT6, TB, T0, T0CAP, T0PWM, T0CK, BUZ, TACK, BLD, nSCK, SO, SI. Circuit Type D-2 D-2 D-2 F-10 D-2 D-2 D-2 D-2 Share Pins INT0/TB INT1/T0/T0CAP/T 0PWM INT2/T0CK/BUZ INT3/TACK/BLD INT4/nSCK INT5/SO INT6/SI KS0-KS3
I/O port with bit programmable pins; Input and output modes can be selected by software; Software assignable pull-up. Alternately, P1.0-P1.3 can be used as KS0-KS3. I/O port with 4-bit programmable pins; Input and output modes can be selected by software; Software assignable pullup. Alternately, P2.0-P2.7 can be used as SEG55-SEG48. I/O port with 4-bit programmable pins; Input and output modes can be selected by software; Software assignable pullup. Alternately, P3.0-P3.7 can be used as SEG47-SEG40. I/O port with 4-bit programmable pins; Input and output modes can be selected by software; Software assignable pullup. Alternately, P4.0-P4.7 can be used as COM8-COM15. Key strobe output port with 4-bit programmable pins. Push-pull and open-drain modes can be selected by software. Alternately, P5.0-P5.15 can be used as SEG39-SEG24. LCD segment signal output.
P2.0-P2.7
I/O
H-35
SEG55-SEG48
P3.0-P3.7
I/O
H-35
SEG47-SEG40
P4.0-P4.7
I/O
H-35
COM8-COM15
P5.0-P5.15
O
H-34
SEG39-SEG24
SEG0- SEG23 SEG24- SEG39 SEG40- SEG55 COM0- COM7 COM8- COM15 KS0-KS3 INT0-INT2, INT4-INT6 INT3
O O I/O O O I/O I/O I/O
H-29 H-34 H-35
- P5.0-P5.15 P3.0-P3.7 P2.0-P2.7 - P4.0-P4.7 P1.0-P1.3 P0.0-P0.2, P0.4-P0.6 P0.3
LCD common signal output.
H-29 H-35
Key interrupt and/or external interrupt inputs. External interrupt input.
D-2 D-2 F-10
1-9
PRODUCT OVERVIEW
S3CB519
Table 1-1. S3CB519 Pin Descriptions (Continued) Pin Name TB T0 T0CAP T0PWM T0CK BUZ TACK BLD nSCK SO SI DAOUT AVDD AVSS ADINP ADINN ADGAIN AVREFOUT REFH REFL VDD VSS XIN, XOUT XTIN, XTOUT TEST nRESET Pin Type I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O O - - I I - O - - - - - - I I Timer B clock output. Timer 0 clock output. Timer 0 capture input. Timer 0 PWM output. Timer 0 clock input. Buzzer output. Timer A clock input. Battery level detector input. Serial I/O interface clock signal. Serial data output. Serial data input. DAC analog output. Analog power. Analog ground. Analog input positive. Analog input negative. Analog input gain control. Analog reference voltage output. Analog reference power. Analog reference ground. Main power supply. Ground Crystal, Ceramic or RC oscillator pins for system clock. Crystal oscillator pins for subsystem clock. Chip test input pin. Hold GND with the device is operating. Reset signal Pin Description Circuit Type D-2 D-2 D-2 D-2 D-2 D-2 F-10 F-10 D-2 D-2 D-2 - - - - - - - - - - - - - - B P0.0 P0.1 P0.1 P0.1 P0.2 P0.2 P0.3 P0.3 P0.4 P0.5 P0.6 - - - - - - - - - - - - - - - Share Pins
1-10
S3CB519
PRODUCT OVERVIEW
PIN CIRCUIT DIAGRAMS
VDD
VDD Pull-Up Resistor In
Pull-up Enable Open drain Enable Data Output
Figure 1-7. Pin Circuit Type B
Figure 1-9. Pin Circuit Type E-2
VDD
VDD
Pull-up Enable Data
Data Out Output Disable
Output Disable
Pin Circuit Type C
I/O
Ext. INT
Noise Filter
Input
Figure 1-8. Pin Circuit Type C
Figure 1-10. Pin Circuit Type D-2
1-11
PRODUCT OVERVIEW
S3CB519
VLC1
Open drain enable
VLC2/VLC3 Out
VDD
Output disable Output Data
VLC4/VLC5
COM/SEG
VSS
Pin Circuit Type H-29
Figure 1-11. Pin Circuit Type H-29
Figure 1-13. Pin Circuit Type H-34
VDD
VDD
Pull-up Enable
Data Output Disable COM/SEG
Pin Circuit Type E-2
Data Output Disable
Pin Circuit Type C
I/O
Pin Circuit Type H-29
I/O
Ext. INT
Noise Filter
Input
Input Analog (BLD)
Figure 1-12. Pin Circuit Type H-35
Figure 1-14. Pin Circuit Type F-10
1-12
S3CB519
ADDRESS SPACE
2
OVERVIEW
ADDRESS SPACE
CalmRISC has 20-bit program address lines, PA[19:0], which support up to 1 Mwords of program memory. The 1 Mword program memory space is divided into 256 pages, and each page is 4 Kwords long as shown on the next page. The upper 8 bits of the program counter, PC[19:12], points to a specific page, and the lower 12 bits, PC[11:0], specify the offset address of the page. CalmRISC also has 16-bit data memory address lines, DA[15:0], which support up to 64K-byte of data memory. The 64K-byte data memory space is divided into 256 pages, and each page has 256 bytes. The upper 8 bits of the data address, DA[15:8], points to a specific page, and the lower 8 bits, DA[7:0], specify the offset address of the page.
2-1
ADDRESS SPACE
S3CB519
PROGRAM MEMORY (ROM)
FFFH 1 Mword
FFFH
4 Kword
00H
256 page 00H
Figure 2-1. Program Memory Organization
For example, if PC[19:0] = 5F79AH, the page index pointed to by PC is 5FH, and the offset in the page is 79AH. If the current PC[19:0] = 5EFFFH and the instruction pointed to by the current PC (i.e., the instruction at the address 5EFFFH is not a branch instruction), the next PC becomes 5E000H, not 5F000H. In other words, the instruction sequence wraps around at the page boundary, unless the instruction at the boundary (in the above example, at 5EFFFH) is a long branch instruction. The only way to change the program page is by long branches (CALL, LNK, and JP), where the absolute branch target address is specified. For example, if the current PC[19:0] = 047ACH (the page index is 04H and the offset is 7ACH) and the instruction pointed to by the current PC (i.e., the instruction at the address 047ACH), is "JP A507FH" (jump to the program address A507FH) , then the next PC[19:0] = A507FH, which means that the page and the offset are changed to A5H and 07FH, respectively. On the other hand, the short branch instructions cannot change the page indices.
2-2
S3CB519
ADDRESS SPACE
Suppose the current PC is 6FFFEH and its instruction is "JR 5H" (jump to the program address PC + 5H), then the next instruction address is 6F003H, not 70003H. In other words, the branch target address calculation also wraps around with respect to a page boundary. This situation is illustrated below:
Page 6FH 000H 001H 002H 003H 004H 005H
FFEH FFFH
JR 5H
Figure 2-2. Relative Jump Around Page Boundary Programmers do not have to manually calculate the offset and insert extra instructions for a jump instruction across page boundaries. The compiler and the assembler for CalmRISC are in charge of producing appropriate codes for them.
2-3
ADDRESS SPACE
S3CB519
FFFFFH
~
~
Program Memory Area (1M-word)
4000H 3FFFH
16K-word 00020H 0001FH Vector and Option Area 00000H
NOTE: S3CB519 has totally 16K-word (32K-byte) program memory area.
Figure 2-3. Program Memory Layout From 00000H to 00004H addresses are used for vector addresses of exceptions, and 0001EH and 0001FH are used for only the option. Aside from these addresses others are reserved in the vector and option area. Program memory area from the address 00020H to FFFFFH can be used for normal programs. Because the S3CB519's program memory is 16 Kword (32K-byte), the block of addresses from 00020H to 3FFFH is the program memory area.
2-4
S3CB519
ADDRESS SPACE
ROM CODE OPTION (RCOD_OPT)
Just after power on, the ROM data located at 0001EH and 0001FH is used as the ROM code option. S3CB519 has ROM code options like the Reset value of Basic timer and Watchdog timer enable. For example, if you program as below: opt_sec section opt_sec dw 3FFH CODE, abs 0001FH
-- fxx/32 is used as Reset value of basic timer (by bit.14, 13, 12) -- Watch-dog timer is enabled (by bit.11) If you don't program any values in these option areas, then the default value is "1". In these cases, the address 0001EH would be the value of "FFFFH".
2-5
ADDRESS SPACE
S3CB519
ROM_Code Option (RCOD_OPT) ROM Address: 0001FH MSB .15 .14 .13 .12 .11 .10 .9 .8 LSB
Not used Reset value of basic timer clock selection bits (WDTCON.6, .5, .4): 000 = fxx/2 Not used 001 = fxx/4 010 = fxx/16 011 = fxx/32 Watchdog timer enable selection bit: 100 = fxx/128 0 = Disable WDT 101 = fxx/256 1 = Enable WDT 110 = fxx/1024 111 = fxx/2048
Not used (Watchdog timer clock input is basic timer overflow)
MSB
.7
.6
.5
.4
.3
.2
.1
.0
LSB
Not used ROM Address: 0001EH MSB .15 .14 .13 .12 .11 .10 .9 .8 LSB
Not used MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used
Figure 2-4. ROM Code Option (RCOD_OPT)
2-6
S3CB519
ADDRESS SPACE
DATA MEMORY ORGANIZATION
The total data memory address space is 64K-byte, addressed by DA[15:0], and divided into 256 pages, Each page consists of 256 bytes as shown below.
FFH 64 KByte
FFH FFFH FFH
256 Byte
00H
256 page 00H 00H 12 page
Figure 2-5. Data Memory Map The data memory page is indexed by SPR and IDH. In data memory index addressing mode, 16-bit data memory address is composed of two 8-bit SPRs, IDH[7:0] and IDL0[7:0] (or IDH[7:0] and IDL1[7:0]). IDH[7:0] points to a page index, and IDL0[7:0] (or IDL1[7:0]) represents the page offset. In data memory direct addressing mode, an 8-bit direct address, adr[7:0], specifies the offset of the page pointed to by IDH[7:0] (See the details for direct addressing mode in the instruction sections). Unlike the program memory organization, data memory address does not wrap around. In other words, data memory index addressing with modification performs an addition or a subtraction operation on the whole 16-bit address of IDH[7:0] and IDL0[7:0] (or IDL1[7:0]) and updates IDH[7:0] and IDL0[7:0] (or IDL1[7:0]) accordingly. Suppose IDH[7:0] is 0FH and IDL0[7:0] is FCH and the modification on the index registers, IDH[7:0] and IDL0[7:0], is increment by 5H, then, after the modification (i.e., 0FFCH + 5 = 1001H), IDH[7:0] and IDL0[7:0] become 10H and 01H, respectively. As for the MAC816 coprocessor, the data memory is a word unit (16-bit wide) and is divided to X-memory and Ymemory for DSP instruction. The address 0080H in CalmRISC, for example, is viewed as 0040H by MAC816.
2-7
ADDRESS SPACE
S3CB519
The S3CB519 has a total of 3072 bytes of data register address from 0080H to 0C7FH. The area from 0000H to 007FH is for peripheral control, and LCD RAM area is from 0C80H to 0CEFH. The MAC816 views the peripheral control register area as being from 0000H to 003FH, and X-memory from 0040H to 043FH, and Y-memory from 0440H to 063FH.
In the point of CalmRISC Page 12 Page 11 FFH in Byte Page 0 LCD RAM EFH in Byte
In the point of MAC816
063FH in word (0C7FH in Byte)
Data Memory 80H 7FH 80H 7FH
Y-memory (1 KBytes)
0440H in word (0880H in Byte) 043FH in word (087FH in Byte)
Control Register 00H
X-memory (2 KBytes)
00H 8 Bits 16 Bits
0040H in word (0080H in Byte)
Figure 2-6. S3CB519 Data Memory Map
2-8
S3CB519
REGISTERS
3
OVERVIEW
REGISTERS
The registers of CalmRISC are grouped into 2 types: general purpose registers and special purpose registers. Table 3-1. General and Special Purpose Registers Registers General Purpose Registers (GPR) Mnemonics R0 R1 R2 R3 Special Purpose Registers (SPR) Group 0 (SPR0) IDL0 IDL1 IDH SR0 Group 1 (SPR1) ILX ILH ILL SR1 Description General Register 0 General Register 1 General Register 2 General Register 3 Lower Byte of Index Register 0 Lower Byte of Index Register 1 Higher Byte of Index Register Status Register 0 Instruction Pointer Link Register for Extended Byte Instruction Pointer Link Register for Higher Byte Instruction Pointer Link Register for Lower Byte Status Register 1 Reset Value Unknown Unknown Unknown Unknown Unknown Unknown Unknown 00H Unknown Unknown Unknown Unknown
GPRs can be used in most instructions such as ALU instructions, stack instructions, load instructions, etc .(See the instruction set sections). From the programming standpoint, they have almost no restriction whatsoever. CalmRISC has 4 banks of GPRs, and each bank has 4 registers, R0, R1, R2, and R3. Hence, 16 GPRs in total are available. The GPR bank can be switched by setting an appropriate value in SR0[4:3] (See SR0 for details). The ALU operations between GPRs from different banks are not allowed. SPRs are designed for their own dedicated purposes. They have some restrictions in terms of instructions that can access them. For example, direct ALU operations cannot be performed on SPRs. However, data transfers between a GPR and an SPR are allowed, and stack operations with SPRs are also possible (See the instruction sections for details).
3-1
REGISTERS
S3CB519
INDEX REGISTERS: IDH, IDL0 AND IDL1 IDH in concatenation with IDL0 (or IDL1) forms a 16-bit data memory address. Note that CalmRISC's data memory address space is 64 Kbyte (addressable by 16-bit addresses). Basically, IDH points to a page index, and IDL0 (or IDL1) corresponds to an offset of the page. Like GPRs, the index registers are 2-way banked. There are 2 banks in total, each of which has its own index registers, IDH, IDL0 and IDL1. The banks of index registers can be switched by setting an appropriate value in SR0[2] (See SR0 for details). Normally, programmers can reserve an index register pair, IDH and IDL0 (or IDL1), for software stack operations. LINK REGISTERS: ILX, ILH AND ILL The link registers are specially designed for link-and-branch instructions (See LNK and LRET instructions in the instruction sections for details). When an LNK instruction is executed, the current PC[19:0] is saved into ILX, ILH and ILL registers (i.e., PC[19:16] into ILX[3:0], PC[15:8] into ILH [7:0]) and PC[7:0] into ILL[7:0], respectively. When an LRET instruction is executed, the PC value returned is recovered from ILX, ILH, and ILL (i.e., ILX[3:0] into PC[19:16], ILH[7:0] into PC[15:8] and ILL[7:0] into PC[7:0], respectively). These registers are used to access program memory by LDC instructions. When an LDC instruction is executed, the (code) data residing at the program address specified by ILX:ILH:ILL will be read into TBH:TBL. There is a special core input pin signal, nP64KW, which is reserved for indicating that the program memory address space is only 64 Kword. By grounding the signal pin to zero, the upper 4 bits of PC, PC[19:16], is deactivated and therefore its program memory address signals from CalmRISC core are also deactivated. This, in turn, totally eliminates the power consumption due to manipulating the upper 4 bits of PC (See the core pin description section for details). From the programmer's standpoint, when nP64KW is tied to the ground level, then PC[19:16] is not saved into ILX for LNK instructions and ILX is not read back into PC[19:16] for LRET instructions. Therefore, ILX is totally unused in LNK and LRET instructions when nP64KW = 0.
3-2
S3CB519
REGISTERS
STATUS REGISTER 0: SR0 SR0 is mainly reserved for system control functions, and each bit of SR0 has its own dedicated function. Table 3-2. Status Register 0 Configuration Flag Name eid ie idb grb[1:0] exe ie0 ie1 Bit 0 1 2 4,3 5 6 7 Description Data memory page selection in direct addressing Global interrupt enable Index register banking selection GPR bank selection Stack overflow/underflow exception enable Interrupt 0 enable Interrupt 1 enable
SR0[0] (or eid) selects which page index is to be used in direct addressing. If eid = 0, then page 0 (page index = 0) is used. Otherwise (eid = 1), IDH of the current index register bank is used for the page index. SR0[1] (or ie) is the global interrupt enable flag. As explained in the interrupt/exception section, CalmRISC has 3 interrupt sources (nonmaskable interrupt, interrupt 0, and interrupt 1) and 1 stack exception. Both interrupt 0 and interrupt 1 are masked by setting SR0[1] to 0 (i.e., ie = 0). When an interrupt is serviced, the global interrupt enable flag ie is automatically cleared. The execution of an IRET instruction (return from an interrupt service routine) automatically sets ie = 1. SR0[2] (or idb) and SR0[4:3] (or grb[1:0]) selects an appropriate bank for index registers and GPRs, respectively, as shown below:
R3 R2 R1 R0
R3 R3 R2 R3 R2 R1 R2 R1 R0 R1 R0 Bank 3 Bank 2 R0 Bank 1 Bank 0
grb [1:0]
idb
11 10 01 00
1 0
IDH IDH
IDL0 IDL0 IDL1 IDL1
Figure 3-1. Bank Selection by Setting of GRB Bits and IDB Bit SR0[5] (or exe) enables the stack exception, that is, the stack overflow/underflow exception. If exe = 0, the stack exception is disabled. The stack exception can be used for program debugging in the software development stage. SR0[6] (or ie0) and SR0[7] (or ie1) are enabled, by setting them to 1. Even though ie0 or ie1 are enabled, the interrupts are ignored (not serviced) if the global interrupt enable flag ie is set to 0.
3-3
REGISTERS
S3CB519
STATUS REGISTER 1: SR1 SR1 is the register for status flags such as ALU execution flag and stack full flag. Table 3-3. Status Register 1: SR1 Flag Name C V Z N SF - Bit 0 1 2 3 4 5, 6, 7 Carry flag Overflow flag Zero flag Negative flag Stack Full flag Reserved Description
SR1[0] (or C) is the carry flag of ALU executions. SR1[1] (or V) is the overflow flag of ALU executions. It is set to 1 if and only if the carry-in into the 8-th bit position of addition/subtraction differs from the carry-out from the 8-th bit position. SR1[2] (or Z) is the zero flag, which is set to 1 if and only if the ALU result is zero. SR1[3] (or N) is the negative flag. Basically, the most significant bit (MSB) of ALU results becomes the N flag. Note, a load instruction into a GPR is considered an ALU instruction. However, if an ALU instruction touches the overflow flag (V) like ADD, SUB, CP, etc, N flag is updated as exclusive-OR of V and the MSB of the ALU result. This implies that even if an ALU operation results in an overflow, N flag is still valid. SR1[4] (or SF) is the stack overflow flag. It is set when the hardware stack is overflowed or underflowed. Programmers can check if the hardware stack has any abnormalities through the stack exception or testing if SF is set (See the hardware stack section for more details). NOTE When an interrupt occurs, the hardware does not save SR0 and SR1, so the software must save the SR1 register values.
3-4
S3CB519
MEMORY MAP
4
OVERVIEW
MEMORY MAP
To support the control of peripheral hardware, the addresses of peripheral control registers are memory-mapped to page 0 of the RAM. Memory mapping lets you use a mnemonic as the operand of an instruction at a specific memory location. In this section, detailed descriptions of the S3CB519 control registers are presented in an easy-to-read format. You can use this section as a quick-reference source when writing application programs. This memory area can be accessed with the whole method of data memory access. -- If SR0 bit 0 is "0" then the accessed register area is always page 0. -- If SR0 bit 0 is "1" then the accessed register page is controlled by the proper value of the IDH register. So if you want to access the memory map area, clear the SR0.0 and use the direct addressing mode. This method is used for most cases. The control register is divided into five areas. Here, the system control register area is same in every device.
Control Register 7FH Peripheral Control Register ( 1 x 16 or 2 x 8) 70H 6FH Peripheral Control Register (4 x 8) 40H 3FH Port Control Register Area (4 x 8) 20H 1FH Port Data Register Area 10H 0FH System Control Register Area 00H Standard exhortative area Standard area
Figure 4-1. Control Register Area
4-1
MEMORY MAP
S3CB519
Table 4-1. Control Registers Register Name Mnemonic Decimal Hex Reset R/W
Location 16H-1FH is not mapped Port 5 data register Port 4 data register Port 3 data register Port 2 data register Port 1 data register Port 0 data register P5 P4 P3 P2 P1 P0 21 20 19 18 17 16 15H 14H 13H 12H 11H 10H 0FH 00H 00H 00H 00H 00H R R/W R/W R/W R/W R/W
Locations 0EH and 0FH are not mapped Watchdog timer control register Basic timer counter Interrupt ID register 1 Interrupt priority register 1 Interrupt mask register 1 Interrupt request register 1 Interrupt ID register 00 Interrupt priority register 00 Interrupt mask register 00 Interrupt request register 00 Oscillator control register Power control register WDTCON BTCNT IIR1 IPR1 IMR1 IRQ1 IIR00 IPR00 IMR00 IRQ00 OSCCON PCON 13 12 11 10 9 8 7 6 5 4 3 2 0DH 0CH 0BH 0AH 09H 08H 07H 06H 05H 04H 03H 02H X0H 00H - - 00H - - - 00H - 00H 04H R/W R R/W R/W R/W R R/W R/W R/W R R/W R/W
Locations 00H and 01H are not mapped
NOTES 1. All the unused and unmapped registers and bits read "0". 2. "-" means undefined.
4-2
S3CB519
MEMORY MAP
Table 4-1. Control Registers (Continued) Register Name Mnemonic Decimal Hex Reset R/W
Locations 35H-3FH are not mapped Port 5 control register P5CON 52 34H 00H R/W
Locations 31H-33H are not mapped Port 4 control register P4CON 48 30H 00H R/W
Locations 2DH-2FH are not mapped Port 3 control register P3CON 44 2CH 00H R/W
Locations 29H-2BH are not mapped Port 2 control register P2CON 40 28H 00H R/W
Locations 26H-27H are not mapped Port 1 interrupt control register Port 1 control register Port 0 interrupt edge control register Port 0 interrupt control register Port 0 control register low Port 0 control register high
NOTE:
P1INT P1CON P0EDGE P0INT P0CONL P0CONH
37 36 35 34 33 32
25H 24H 23H 22H 21H 20H
00H 00H 00H 00H 00H 00H
R/W R/W R/W R/W R/W R/W
All unused and unmapped registers and bits read "0".
4-3
MEMORY MAP
S3CB519
Table 4-1. Control Registers (Concluded) Register Name D/A converter data register D/A converter control register Battery level detector register Watch timer control register LCD contrast register LCD mode register LCD control register Interrupt ID register 01 Interrupt priority register 01 Interrupt mask register 01 Interrupt request register 01 Timer 0 counter Timer 0 data register Timer 0 control register A/D Converter data register, Low byte A/D Converter data register, High byte A/D Converter control register Serial I/O data register Serial I/O pre-scale register Serial I/O control register Timer B counter Timer B data register Timer B control register Timer A counter Timer A data register Timer A control register
NOTES 1. All unused and unmapped registers and bits read "0". 2. "-" means undefined.
Mnemonic DADATA DACON BLDCON WTCON LCNST LMOD LCON IIR01 IPR01 IMR01 IRQ01 T0CNT T0DATA T0CON
Decimal 115 114 113 112 94 93 92 91 90 89 88 82 81 80 78 77 76 74 73 72 70 69 68 66 65 64
Hex 73H 72H 71H 70H 5EH 5DH 5CH 5BH 5AH 59H 58H 52H 51H 50H 4EH 4DH 4CH 4AH 49H 48H 46H 45H 44H 42H 41H 40H
Reset 00H 00H 40H 00H 00H 00H 00H - - 00H - - FFH 00H 00H 00H 00H 00H 00H 00H - FFH 00H - FFH 00H
R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R R R/W R/W R R R/W R/W R/W R/W R R/W R/W R R/W R/W
Locations 74H-7FH are not mapped
Locations 5FH-6FH are not mapped
Locations 53H-57H are not mapped
Location 4FH is not mapped ADDATAL ADDATAH ADCON Location 4BH is not mapped SIODATA SIOPS SIOCON Location 47H is not mapped TBCNT TBDATA TBCON Location 43H is not mapped TACNT TADATA TACON
4-4
S3CB519
HARDWARE STACK
5
HARDWARE STACK
OVERVIEW
The hardware stack in CalmRISC has two usages: -- To save and restore the return PC[19:0] on CALL, CALLS, RET, and IRET instructions. -- Temporary storage space for registers on PUSH and POP instructions. When PC[19:0] is saved into or restored from the hardware stack, the access should be 20 bits wide. On the other hand, when a register is pushed into or popped from the hardware stack, the access should be 8 bits wide. Hence, to maximize the efficiency of the stack usage, the hardware stack is divided into 3 parts: the extended stack bank (XSTACK, 4-bits wide), the odd bank (8-bits wide), and the even bank (8-bits wide).
Hardware Stack
3 Level 0 Level 1 Level 2 0 7 0 7 0 5
Stack Pointer SPTR [5:0]
1 0
Stack Level Pointer
Odd or Even Bank Selector
Level 14 Level 15 XSTACK Odd Bank Even Bank
Figure 5-1. Hardware Stack
5-1
HARDWARE STACK
S3CB519
The top of the stack (TOS) is pointed to by a stack pointer, called sptr[5:0]. The upper 5 bits of the stack pointer, sptr[5:1], points to the stack level into which either PC[19:0] or a register is saved. For example, if sptr[5:1] is 5H or TOS is 5, then level 5 of XSTACK is empty and either level 5 of the odd bank or level 5 of the even bank is empty. In fact, sptr[0], the stack bank selection bit, indicates which bank(s) is empty. If sptr[0] = 0, both level 5 of the even and the odd banks are empty. On the other hand, if sptr[0] = 1, level 5 of the odd bank is empty, but level 5 of the even bank is occupied. This situation is well illustrated in the figure below.
Level 0 Level 1 Level 2 Level 3 Level 4 Level 5
SPTR [5:0]
5 10 001010 Stack Level Pointer Bank Selector
Level 15 XSTACK Odd Bank Even Bank
Level 0 Level 1 Level 2 Level 3 Level 4 Level 5
SPTR [5:0]
5 10 001011 Stack Level Pointer Bank Selector
Level 15 XSTACK Odd Bank Even Bank
Figure 5-2. Even and Odd Bank Selection Example As can be seen in the above example, sptr[5:1] is used as the hardware stack pointer when PC[19:0] is pushed or popped and sptr[5:0] as the hardware stack pointer when a register is pushed or popped. Note that XSTACK is used only for storing and retrieving PC[19:16]. Let us consider the cases where PC[19:0] is pushed into the hardware stack (by executing CALL/CALLS instructions or by interrupts/exceptions being served) or is retrieved from the hardware stack (by executing RET/IRET instructions). Regardless of the stack bank selection bit (sptr[0]), TOS of the even bank and the odd bank stores or returns PC[7:0] or PC[15:8], respectively. This is illustrated in the following figures.
5-2
S3CB519
HARDWARE STACK
Level 0
SPTR [5:0]
5 10 001010 Stack Level Pointer
Level 0
SPTR [5:0]
5 10 001011 Stack Level Pointer
Level 5 Level 6 Bank Selector
Level 5 Level 6 Bank Selector
Level 15 XSTACK Odd Bank Even Bank by Executing CALL, CALLS or Interrupts/Exceptions
Level 15 XSTACK Odd Bank Even Bank by Executing CALL, CALLS or Interrupts/Exceptions
by Executing RET, IRET
by Executing RET, IRET
Level 0
SPTR [5:0]
5 10 001100 Stack Level Pointer
Level 0
SPTR [5:0]
5 10 001101 Stack Level Pointer
Level 5 PC[19:16] Level 6
PC[15:8]
PC[7:0]
Level 5 PC[19:16] Bank Selector Level 6
PC[7:0] PC[15:8]
Bank Selector
Level 15 XSTACK Odd Bank Even Bank
Level 15 XSTACK Odd Bank Even Bank
Figure 5-3. Stack Operation with PC [19:0] As can be seen in the figures, when stack operations with PC[19:0] are performed, the stack level pointer sptr[5:1] (not sptr[5:0]) is either incremented by 1 (when PC[19:0] is pushed into the stack) or decremented by 1 (when PC[19:0] is popped from the stack). The stack bank selection bit (sptr[0]) is unchanged. If a CalmRISC core input signal nP64KW is 0, which signifies that only PC[15:0] is meaningful, then any access to XSTACK is totally deactivated from the stack operations with PC. Therefore, XSTACK has no meaning when the input pin signal, nP64KW, is tied to 0. In that case, XSTACK doesn't have to even exist. As a matter of fact, XSTACK is not included in CalmRISC core itself and it is interfaced through some specially reserved core pin signals (nPUSH, nSTACK, XHSI[3:0], XSHO[3:0]), if the program address space is more than 64K words (See the core pin signal section for details). With regards to stack operations with registers, a similar argument can be made.The only difference is that the data written into or read from the stack are a byte. Hence, the even bank and the odd bank are accessed alternately as shown below.
5-3
HARDWARE STACK
S3CB519
Level 0
SPTR [5:0]
5 10 001010 Stack Level Pointer
Level 0
SPTR [5:0]
5 10 001011 Stack Level Pointer
Level 5 Level 6 Bank Selector
Level 5 Level 6 Bank Selector
Level 15 XSTACK Odd Bank Even Bank
Level 15 XSTACK Odd Bank Even Bank
POP Register
PUSH Register
POP Register
PUSH Register
Level 0
SPTR [5:0]
5 10 001011 Stack Level Pointer
Level 0
SPTR [5:0]
5 10 001100 Stack Level Pointer
Level 5 Level 6
Register
Level 5 Bank Selector Level 6
Register
Bank Selector
Level 15 XSTACK Odd Bank Even Bank
Level 15 XSTACK Odd Bank Even Bank
Figure 5-4. Stack Operation with Registers When the bank selection bit (sptr[0]) is 0, then the register is pushed into the even bank and the bank selection bit is set to 1. In this case, the stack level pointer is unchanged. When the bank selection bit (sptr[0]) is 1, then the register is pushed into the odd bank, the bank selection bit is set to 0, and the stack level pointer is incremented by 1. Unlike the push operations of PC[19:0], any data are not written into XSTACK in the register push operations. This is illustrated in the example figures. When a register is pushed into the stack, sptr[5:0] is incremented by 1 (not the stack level pointer sptr[5:1]). The register pop operations are the reverse processes of the register push operations. When a register is popped out of the stack, sptr[5:0] is decremented by 1 (not the stack level pointer sptr[5:1]). Hardware stack overflow/underflow happens when the MSB of the stack level pointer, sptr[5], is 1. This is obvious from the fact that the hardware stack has only 16 levels and the following relationship holds for the stack level pointer in a normal case. Suppose the stack level pointer sptr[5:1] = 15 (or 01111B in binary format) and the bank selection bit sptr[0] = 1. Here if either PC[19:0] or a register is pushed, the stack level pointer is incremented by 1. Therefore, sptr[5:1] = 16 (or 10000B in binary format) and sptr[5] = 1, which implies that the stack is overflowed. The situation is depicted in the following figure.
5-4
S3CB519
HARDWARE STACK
SPTR [5:0]
5 10 011111 Level 0 Level 1
Level 14 Level 15 XSTACK Odd Bank PUSH Register Even Bank PUSH PC [19:0]
SPTR [5:0]
5 10 100000 Level 0 Level 1
SPTR [5:0]
5 10 100001
Level 0 Level 1
PC[7:0]
Level 14 Level 15 Register XSTACK Odd Bank Even Bank
Level 14 Level 15 PC[19:16]
PC[15:8]
XSTACK Odd Bank
Even Bank
Figure 5-5. Stack Overflow The first overflow happens due to a register push operation. As explained earlier, a register push operation increments sptr[5:0] (not sptr[5:1]) , which results in sptr[5] = 1, sptr[4:1] = 0 and sptr[0] = 0. As indicated by sptr[5] = 1, an overflow happens. Note that this overflow doesn't overwrite any data in the stack. On the other hand, when PC[19:0] is pushed, sptr[5:1] is incremented by 1 instead of sptr[5:0], and as expected, an overflow results. Unlike the first overflow, PC[7:0] is pushed into level 0 of the even bank and the data that has been there before the push operation is overwritten. A similar argument can be made about stack underflows. Note that any stack operation, which causes the stack to overflow or underflow, doesn't necessarily mean that any data in the stack are lost, as is observed in the first example. In SR1, there is a status flag, SF (Stack Full Flag), which is exactly the same as sptr[5]. In other words, the value of sptr[5] can be checked by reading SF (or SR1[4]). SF is not a sticky flag in the sense that if there was a stack overflow/underflow but any following stack access instructions clear sptr[5] to 0, then SF = 0 and programmers cannot tell whether there was a stack overflow/underflow by reading SF. For example, if a program pushes a register 64 times in a row, sptr[5:0] is exactly the same as sptr[5:0] before the push sequence. Therefore, special attention should be paid. Another mechanism to detect a stack overflow/underflow is through a stack exception. A stack exception happens only when the execution of any stack access instruction results in SF = 1 (or sptr[5] = 1). Suppose a register push operation makes SF = 1 (the SF value before the push operation doesn't matter). Then the stack exception due to the push operation is immediately generated and served If the stack exception enable flag (exe of SR0) is 1. If the stack exception enable flag is 0, then the generated interrupt is not served but pending. Sometime later when the stack exception enable flag is set to 1, the pending exception request is served even if SF = 0. More details are available in the stack exception section.
5-5
HARDWARE STACK
S3CB519
NOTES
5-6
S3CB519
EXCEPTIONS
6
OVERVIEW
EXCEPTIONS
Exceptions in CalmRISC are listed in the table below. Exception handling routines, residing at the given addresses in the table, are invoked when the corresponding exception occurs. The starting address of each exception routine is specified by concatenating 0H (leading 4 bits of 0) and the 16-bit data in the exception vector listed in the table. For example, the interrupt service routine for NMI starts from 0H:PM[00001H]. Note that ":" means concatenation and PM[*] stands for the 16-bit content at the address * of the program memory. Aside from the exception due to reset release, the current PC is pushed in the stack on an exception. When an exception is executed due to NMI/IRQ[1:0]/IEXP, the global interrupt enable flag, ie bit (SR0[1]), is set to 0, whereas ie is set to 1 when IRET or an instruction that explicitly sets ie is executed. Table 6-1. Exceptions Name Reset NMI IRQ[0] IRQ[1] IEXP - - -
NOTE:
Address 00000H 00001H 00002H 00003H 00004H 00005H 00006H 00007H
Priority 1 st 2 nd 4 th 5 th 3 rd - - - Exception due to rest release.
Description
Exception due to nNMI signal. Non-maskable. Not used. Exception due to nIRQ[0] signal. Maskable by setting ie/ie0. Exception due to nIRQ[1] signal. Maskable by setting ie/ie1. Exception due to stack full. Maskable by setting exe. Reserved. Reserved. Reserved.
Break mode due to BKREQ has a higher priority than all the exceptions above. That is, when BKREQ is active, even the exception due to reset release is not executed.
HARDWARE RESET When Hardware Reset is active (the reset input signal pin nRES = 0), the control pins in the CalmRISC core are initialized to be disabled, and SR0 and sptr (the hardware stack pointer) are initialized to be 0. Additionally, the interrupt sensing block is cleared. When Hardware Reset is released (nRES = 1), the reset exception is executed by loading the JP instruction in IR (Instruction Register) and 0h:0000h in PC. Therefore, when Hardware Reset is released, the "JP {0h:PM[00000h]}" instruction is executed. When the reset exception is executed, a core output signal nEXPACK is generated to acknowledge the exception.
6-1
EXCEPTIONS
S3CB519
NMI EXCEPTION (EDGE SENSITIVE) On the falling edge of a core input signal nNMI, the NMI exception is executed by loading the CALL instruction in IR and 0h:0001h in PC. Therefore, when NMI exception is activated, the "CALL {0h:PM[00001h]}" instruction is executed. When the NMI exception is executed, the ie bit (SR0[1]) becomes 0 and a core output signal nEXPACK is generated to acknowledge the exception. IRQ[0] EXCEPTION (LEVEL-SENSITIVE) When a core input signal nIRQ[0] is low, SR0[6] (ie0) is high, and SR0[1] (ie) is high, IRQ[0] exception is generated, and this will load the CALL instruction in IR (Instruction Register) and 0h:0002h in PC. Therefore, on an IRQ[0] exception, the "CALL {0h:PM[00002h]}" instruction is executed. When the IRQ[0] exception is executed, SR0[1] (ie) is set to 0 and a core output signal nEXPACK is generated to acknowledge the exception. IRQ[1] EXCEPTION (LEVEL-SENSITIVE) When a core input signal nIRQ[1] is low, SR0[7] (ie1) is high, and SR0[1] (ie) is high, IRQ[1] exception is generated, and this will load the CALL instruction in IR (Instruction Register) and 0h:0003h in PC. Therefore, on an IRQ[1] exception, the "CALL {0h:PM[00003h]}" instruction is executed. When the IRQ[1] exception is executed, SR0[1] (ie) is set to 0 and a core output signal nEXPACK is generated to acknowledge the exception. HARDWARE STACK FULL EXCEPTION A Stack Full exception occurs when a stack operation is performed and as a result of the stack operation sptr[5] (SF) is set to 1. If the stack exception enable bit, exe (SR0[5]), is 1, the Stack Full exception is served. One exception to this rule is when nNMI causes a stack operation that sets sptr[5] (SF), since it has higher priority. Handling a Stack Full exception may cause another Stack Full exception. In this case, the new exception is ignored. On a Stack Full exception, the CALL instruction is loaded in IR (Instruction Register) and 0h:0004h in PC. Therefore, when the Stack Full exception is activated, the "CALL {0h:PM[00004h]}" instruction is executed. When the exception is executed, SR0[1] (ie) is set to 0, and a core output signal nEXPACK is generated to acknowledge the exception. BREAK EXCEPTION Break exception is reserved only for an in-circuit debugger. When a core input signal, BKREQ, is high, the CalmRISC core is halted or in the break mode, until BKREQ is deactivated. Another way to drive the CalmRISC core into the break mode is by executing a break instruction, BREAK. When BREAK is fetched, it is decoded in the fetch cycle (IF stage) and the CalmRISC core output signal nBKACK is generated in the second cycle (ID/MEM stage). An in-circuit debugger generates BKREQ active by monitoring nBKACK to be active. BREAK instruction is exactly the same as the NOP (no operation) instruction except that it does not increase the program counter and activates nBKACK in the second cycle (or ID/MEM stage of the pipeline). There, once BREAK is encountered in the program execution, it falls into a deadlock. BREAK instruction is reserved for in-circuit debuggers only, so it should not be used in user programs.
6-2
S3CB519
EXCEPTIONS
EXCEPTIONS (or INTERRUPTS)
LEVEL NMI VECTOR 0001H SOURCE Not used AD/DA interrupt IVEC0 0002H Timer A match Timer B match SIO External interrupt INT0 INT1 INT2 INT3 INT4 INT5 INT6 Basic timer overflow Watch timer IVEC1 0003H Timer 0 match Timer 0 overflow KS0 KS1 KS2 KS3 SF_EXCEP 0004H Stack full INT H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W H/W RESET (CLEAR) H/W H/W, S/W H/W, S/W H/W, S/W H/W, S/W
NOTES: 1. There are two interrupt vectors, and the one interrupt vector have several interrupt sources. The priority of the sources is controlled by setting the IPR register. 2. IMR00, IPR00, IRQ00, is responsible for AD/DA interrupt, Timer A, Timer B, SIO, External, Basic timer, Watch timer interrupt. IMR01, IPR01, IRQ01 is responsible for INT0-INT6 interrupt. IMR1, IPR1, IRQ1 is responsible for Timer 0 Match, Timer 0 Overflow, Key scan interrupts. 3. External interrupts are triggered by a rising or falling edge, depending on the corresponding control register setting. 4. The NMI has the most higher priority in the interrupt levels. And the priority of SF_EXCEP is next but higher then IVEC0, IVEC1's priority is the last. 5. When system reset occurs, IPR register value is undefined. After reset, the interrupt priority can be changed by setting of IPR register. 6. The pending bit is cleared by Hardware when CPU reads the IIR register value. 7. If you write "LD IIRx, #8H", all bits of IRQx are cleared. (Where x is 1, 00, 01)
Figure 6-1. Interrupt Structure
6-3
EXCEPTIONS
S3CB519
Clear (when writing clear bit value to bit.2. 1. 0) ex) LD IIR1, #x5H IRQ1.5 is cleared
IIR1
Timer 0 Match P1INT.0 KS0 P1INT.1 KS1 P1INT.2 KS2 P1INT.3 KS3 Not used Not used Timer 0 Overflow
IRQ1.0 IRQ1.1 IRQ1.2 IRQ1.3 IRQ1.4 IRQ1.5 IRQ1.6 IRQ1.7 IMR1 IPR1 IVEC1 IMR1 Logic IPR1 Logic
STOP & IDLE Release
CPU
AD/DA Interrupt Timer A match Timer B match SIO External Interrupt Basic Timer Watch Timer Not used
IRQ00.0 IRQ00.1 IRQ00.2 IRQ00.3 IRQ00.4 IRQ00.5 IRQ00.6 IRQ00.7 IMR00 Logic IPR00 Logic IMR00 IPR00 IVEC0
IIR00 Clear (when writing clear bit value to bit.2. 1. 0) ex) LD IIR00, #x5H IRQ00.5 is cleared INT0 INT1 INT2 INT3 INT4 INT5 INT6 IRQ01.0 IRQ01.1 IRQ01.2 IRQ01.3 IRQ01.4 IRQ01.5 IRQ01.6 IIR01 Clear (when writing clear bit value to bit.2. 1. 0) ex) LD IIR01, #x3H IRQ01.3 is cleared IMR01/ IPR01 Logic
Figure 6-2. Interrupt Structure
6-4
S3CB519
EXCEPTIONS
INTERRUPT MASK REGISTERS
Interrupt Mask Register00 (IMR00) 05H, R/W .7 .6 .5 .4 .3 .2 .1 .0
IRQ00.4 IRQ00.5 IRQ00.6 IRQ00.7 IRQ00.3 Interrupt Mask Register01 (IMR01) 59H, R/W .7 .6 .5 .4 .3 .2 .1 IRQ00.2 IRQ00.1
IRQ00.0
.0
IRQ01.4 IRQ01.5 IRQ01.6 IRQ01.7 IRQ01.3 Interrupt Mask Register1 (IMR1) 09H, R/W .7 .6 .5 .4 .3 .2 .1 IRQ01.2 IRQ01.1
IRQ01.0
.0
IRQ1.4 IRQ1.5 IRQ1.6 IRQ1.7 Interrupt request enable bits: 0 = Disable interrupt request 1 = Enable interrupt request NOTE: IRQ1.3 IRQ1.2 IRQ1.1
IRQ1.0
If you want to change the value of the IMR register, then you first make disable global INT by DI instruction, and change the value of the IMR register.
Figure 6-3. Interrupt Mask Register
6-5
EXCEPTIONS
S3CB519
INTERRUPT PRIORITY REGISTER
IPR Group A
IPR Group B
IPR Group C
IRQx.0
IRQx.1
IRQx.2
IRQx.3
IRQx.4
IRQx.5
IRQx.6 IRQx.7
(note)
Interrupt Priority Registers (IPR00:06H, IPR01:5AH, IPR1:0AH, R/W ) .7 .6 .5 .4 .3 .2 .1 .0
Group priority: .7 .4 .1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Not used B>C>A A>B>C B>A>C C>A>B C>B>A A>C>B Not used Group A 0 = IRQx.0 > IRQx.1 1 = IRQx.1 > IRQx.0 Group B 0 = IRQx.2 > (IRQx.3,IRQx.4) 1 = (IRQx.3,IRQx.4) > IRQx.2 Subgroup B 0 = IRQx.3 > IRQx.4 1 = IRQx.4 > IRQx.3 Group C 0 = IRQx.5 > (IRQx.6,IRQx.7) 1 = (IRQx.6,IRQx.7) > IRQx.5 Subgroup C 0 = IRQx.6 > IRQx.7 1 = IRQx.7 > IRQx.6
NOTE:
If you want to change the value of the IPR register, then you first make disable global INT by DI instruction, and change the value of the IPR register.
Figure 6-4. Interrupt Priority Register
6-6
S3CB519
EXCEPTIONS
F
PROGRAMMING TIP -- Interrupt Programming Tip 1
Jumped from vector 2 PUSH PUSH LD CP JR CP JR CP JP JP CP JP JP CP JR CP JP JP CP JP JP
*
LTE05
LTE03
LTE01
SR1 R0 R0, IIR00 R0, #03h ULE, LTE03 R0, #05h ULE, LTE05 R0, #06h EQ, IRQ6_srv T, IRQ7_srv R0, #04 EQ, IRQ4_srv T, IRQ5_srv R0, #01 ULE, LTE01 R0, #02 EQ, IRQ2_srv T, IRQ3_srv R0, #00h EQ, IRQ0_srv T, IRQ1_srv ; service for IRQ0
IRQ0_srv POP POP IRET IRQ1_srv
* *
R0 SR1 ; service for IRQ1
POP POP IRET
* *
R0 SR1
IRQ7_srv
* *
; service for IRQ7
POP POP IRET
NOTE:
R0 SR1
If the SR0 register is changed in the interrupt service routine, then the SR0 register must be pushed and popped in the interrupt service routine.
6-7
EXCEPTIONS
S3CB519
F
PROGRAMMING TIP -- Interrupt Programming Tip 2
Jumped from vector 2 PUSH PUSH PUSH LD SL LD ADD LD LD LRET LJP LJP LJP LJP LJP LJP LJP LJP
* *
SR1 R0 R1 R0, IIR00 R0 R1, < TBL_INTx R0, > TBL_INTx ILH, R1 ILL, R0 IRQ0_svr IRQ1_svr IRQ2_svr IRQ3_svr IRQ4_svr IRQ5_svr IRQ6_svr IRQ7_svr ; service for IRQ0
TBL_INTx
IRQ0_srv
POP POP POP IRET IRQ1_srv
* *
R1 R0 SR1 ; service for IRQ1
POP POP POP IRET
* *
R1 R0 SR1
IRQ7_srv
* *
; service for IRQ7
POP POP POP IRET
R1 R0 SR1
NOTES: 1. If the SR0 register is changed in the interrupt service routine, then the SR0 register must be pushed and popped in the interrupt service routine. 2. Above example is assumed that ROM size is less than 64K-word and all the LJP instructions in the jump table (TBL_INTx) is in the same page.
6-8
S3CB519
COPROCESSOR INTERFACE
7
COPROCESSOR INTERFACE
OVERVIEW
CalmRISC supports an efficient and seamless interface with coprocessors. By integrating a MAC (multiply and accumulate) DSP coprocessor engine with the CalmRISC core, not only the microcontroller functions but also complex digital signal processing algorithms can be implemented in a single development platform (or MDS). CalmRISC has a set of dedicated signal pins, through which data/command/status are exchanged to and from a coprocessor. Depicted below are the coprocessor signal pins and the interface between two processors.
Program ROM
Data RAM
Data Bus [7:0]
SYSCP [11:0]
nCOPID
CalmRISC
nCLDID
Coprocessor
CLDWR
EC[2:0]
Figure 7-1. Coprocessor Interface Diagram
7-1
COPROCESSOR INTERFACE
S3CB519
As shown in the coprocessor interface diagram above, the coprocessor interface signals of CalmRISC are: SYSCP[11:0], nCOPID, nCLDID, nCLDWR, and EC[2:0]. The data are exchanged through data buses, DI[7:0] and DO[7:0]. A command is issued from CalmRISC to a coprocessor through SYSCP[11:0] in COP instructions. The status of a coprocessor can be sent back to CalmRISC through EC[2:0] and these flags can be checked in the condition codes of branch instructions. The coprocessor instructions are listed in the following table Table 7-1. Coprocessor instructions Mnemonic COP CLD CLD JP(or JR) CALL LNK Op 1 #imm:12 GPR imm:8 EC2-EC0 - imm:8 GPR label Op 2 Coprocessor operation Data transfer from coprocessor into GPR Data transfer of GPR to coprocessor Conditional branch with coprocessor status flags Description
The coprocessor of CalmRISC does not have its own program memory (i.e., it is a passive coprocessor) as shown in Figure 7 -1. In fact, the coprocessor instructions are fetched and decoded by CalmRISC, and CalmRISC issues the command to the coprocessor through the interface signals. For example, if "COP #imm:12" instruction is fetched, then the 12-bit immediate value (imm:12) is loaded on SYSCP[11:0] signal with nCOPID active in ID/MEM stage, to request the coprocessor to perform the designated operation. The interpretation of the 12-bit immediate value is totally up to the coprocessor. By arranging the 12-bit immediate field, the instruction set of the coprocessor is determined. In other words, CalmRISC only provides a set of generic coprocessor instructions, and its installation to a specific coprocessor instruction set can differ from one coprocessor to another. CLD Write instructions ("CLD imm:8, GPR") put the content of a GPR register of CalmRISC on the data bus (DO[7:0] ) and issue the address(imm:8) of the coprocessor internal register on SYSCP[7:0] with nCLDID active and CLDWR active. CLD Read instructions ("CLD GPR, imm:8" in Table 7-1) work similarly, except that the content of the coprocessor internal register addressed by the 8-bit immediate value is read into a GPR register through DI[7:0] with nCLDID active and CLDWR deactivated. The timing diagram given below is a coprocessor instruction pipeline and shows when the coprocessor performs the required operations. Suppose I2 is a coprocessor instruction. First, it is fetched and decoded by CalmRISC (at t = T(i1)). Once it is identified as a coprocessor instruction, CalmRISC indicates to the coprocessor the appropriate command through the coprocessor interface signals (at t = T(i)). Then the coprocessor performs the designated tasks at t = T(i) and t = T(i+1). Hence IF from CalmRISC and then ID/MEM and EX from the coprocessor constitute the pipeline for I2. Similarly, if I3 is a coprocessor instruction, the coprocessor's ID/MEM and EX stages replace the corresponding stages of CalmRISC.
7-2
S3CB519
COPROCESSOR INTERFACE
CalmRISC
T (i -1)
T (i)
T (i +1)
I1: Normal Instruction I2: Coprocessor Instruction I3: Coprocessor Instruction Coprocessor Interface Signals
IF
ID/MEM IF
EX ID/MEM IF EX ID/MEM EX
For I2
For I 3
Coprocessor
I2: I3: ID/MEM EX ID/MEM EX
Figure 7-2. Coprocessor Instruction Pipeline In a multi-processor system, the data transfer between processors is an important factor to determine the efficiency of the overall system. Suppose an input data stream is accepted by a processor, in order for the data to be shared by another processors. There should be some efficient mechanism to transfer the data to the processors. In CalmRISC, data transfers are accomplished through a single shared data memory. The shared data memory in a multi-processor has some inherent problems such as data hazards and deadlocks. However, the coprocessor in CalmRISC accesses the shared data memory only at the designated time by CalmRISC at which time CalmRISC is guaranteed not to access the data memory, and therefore there is no contention over the shared data memory. Another advantage of the scheme is that the coprocessor can access the data memory in its own bandwidth.
7-3
COPROCESSOR INTERFACE
S3CB519
NOTES
7-4
S3CB519
INSTRUCTION SET
8
OVERVIEW
GLOSSARY Notation GPR SPR adr:N @idm (adr:N) cc:4 imm:N & | ~ ^ N**M (N)M
INSTRUCTION SET
This chapter describes the CalmRISC instruction set and the details of each instruction are listed in alphabetical order. The following notations are used for the description. Table 8-1. Instruction Notation Conventions Interpretation Operand N. N can be omitted if there is only one operand. Typically, is the destination (and source) operand and is a source operand. General Purpose Register Special Purpose Register (IDL0, IDL1, IDH, SR0, ILX, ILH, ILL, SR1) N-bit address specifier Content of memory location pointed by ID0 or ID1 Content of memory location specified by adr:N 4-bit condition code. Table 8-6 describes cc:4. N-bit immediate number Bit-wise AND Bit-wise OR Bit-wise NOT Bit-wise XOR Mth power of N M-based number N
As additional note, only the affected flags are described in the tables in this section. That is, if a flag is not affected by an operation, it is NOT specified.
8-1
INSTRUCTION SET
S3CB519
INSTRUCTION SET MAP
Table 8-2.Overall Instruction Set Map IR [15:13,7:2] 000 xxxxxx 001 xxxxxx [12:10]000 ADD GPR, #imm:8 ADD GPR, @idm ADD GPR, adr:8 ADC GPR, adr:8 ADD GPR, GPR ADC GPR, GPR invalid AND GPR, GPR SLA/SL/ RLC/RL/ SRA/SR/ RRC/RR/ GPR 001 SUB GPR, #imm:8 SUB GPR, @idm SUB GPR, adr:8 SBC GPR, adr:8 SUB GPR, GPR SBC GPR, GPR invalid OR GPR, GPR INC/INCC/ DEC/ DECC/ COM/ COM2/ COMC GPR LD GPR, SPR 010 CP GPR, #imm8 CP GPR, @idm CP GPR, adr:8 CPC GPR, adr:8 CP GPR, GPR CPC GPR, GPR invalid XOR GPR, GPR invalid 011 LD GPR, #imm:8 LD GPR, @idm LD GPR, adr:8 LD adr:8, GPR 100 TM GPR, #imm:8 LD @idm, GPR 101 AND GPR, #imm:8 AND GPR, @idm 110 OR GPR, #imm:8 OR GPR, @idm 111 XOR GPR, #imm:8 XOR GPR, @idm
010 xxxxxx
BITT adr:8.bs
BITS adr:8.bs
011 xxxxxx
BITR adr:8.bs
BITC adr:8.bs
100 000000
BMS/BMC LD SPR0, #imm:8 invalid
AND GPR, adr:8
OR GPR, adr:8
XOR GPR, adr:8
100 000001
100 000010 100 000011
invalid invalid
100 00010x
invalid
100 00011x
LD SPR, GPR
SWAP GPR, SPR invalid LD GPR, GPR
LD TBH/TBL, GPR invalid LD GPR, TBH/TBL
100 00100x 100 001010
PUSH SPR POP SPR PUSH GPR POP GPR
8-2
S3CB519
INSTRUCTION SET
Table 8-2. Overall Instruction Set Map (Continued) IR 100 001011 [12:10]000 POP 001 invalid 010 LDC 011 invalid 100 LD SPR0, #imm:8 101 AND GPR, adr:8 110 OR GPR, adr:8 111 XOR GPR, adr:8
100 00110x
RET/LRET/I RET/NOP/ BREAK invalid LD GPR:bank, GPR:bank invalid
invalid
invalid
invalid
100 00111x 100 01xxxx
invalid AND SR0, #imm:8 invalid
invalid OR SR0, #imm:8 invalid
invalid BANK #imm:2 invalid
100 100000 100 110011 100 1101xx 100 1110xx 100 1111xx [15:10] 101 xxx 110 0xx 110 1xx 111 xxx
NOTE:
LCALL cc:4, imm:20 (2-word instruction) LLNK cc:4, imm:20 (2-word instruction) LJP cc:4, imm:20 (2-word instruction) JR cc:4, imm:9 CALLS imm:12 LNKS imm:12 CLD GPR, imm:8 / CLD imm:8, GPR / JNZD GPR, imm:8 / SYS #imm:8 / COP #imm:12
"invalid" - invalid instruction.
8-3
INSTRUCTION SET
S3CB519
Table 8-3. Instruction Encoding Instruction ADD GPR, #imm:8 SUB GPR, #imm:8 CP GPR, #imm:8 LD GPR, #imm:8 TM GPR, #imm:8 AND GPR, #imm:8 OR GPR, #imm:8 XOR GPR, #imm:8 ADD GPR, @idm SUB GPR, @idm CP GPR, @idm LD GPR, @idm LD @idm, GPR AND GPR, @idm OR GPR, @idm XOR GPR, @idm ADD GPR, adr:8 SUB GPR, adr:8 CP GPR, adr:8 LD GPR, adr:8 BITT adr:8.bs BITS adr:8.bs ADC GPR, adr:8 SBC GPR, adr:8 CPC GPR, adr:8 LD adr:8, GPR BITR adr:8.bs BITC adr:8.bs 011 010 001 15 14 000 13 12 11 000 001 010 011 100 101 110 111 000 001 010 011 100 101 110 111 000 001 010 011 10 11 000 001 010 011 10 11 bs GPR adr[7:0] bs GPR adr[7:0] GPR idx mod offset[4:0] 10 9 8 7 6 5 4 3 2 1 0
GPR
imm[7:0]
8-4
S3CB519
INSTRUCTION SET
Table 8-3. Instruction Encoding (Continued) Instruction ADD GPRd, GPRs SUB GPRd, GPRs CP GPRd, GPRs BMS/BMC ADC GPRd, GPRs SBC GPRd, GPRs CPC GPRd, GPRs invalid invalid AND GPRd, GPRs OR GPRd, GPRs XOR GPRd, GPRs invalid ALUop1 ALUop2 invalid LD SPR, GPR LD GPR, SPR SWAP GPR, SPR LD TBL, GPR LD TBH, GPR PUSH SPR POP SPR invalid PUSH GPR POP GPR LD GPRd, GPRs LD GPR, TBL LD GPR, TBH POP LDC @IL LDC @IL+ Invalid
NOTE: "x" means not applicable.
15
14 100
13
12
11 000 001 010 011 000 001 010 011 ddd 000 001 010 011 000 001
10
9
8
7
6
5
4
3
2
1
0
GPRd
000000
GPRs
000001
000010 000011
GPR GPR xx GPR GPR GPR GPR
00010
ALUop1 ALUop2 xxx
010-011 000 001 010 011
00011
SPR SPR SPR x x 0 1 SPR SPR xxx x x
000 001 010-011 000 001 010 011
xx xx xx GPR GPR GPRd GPR
00100
001010
GPR GPR GPRs 0 1 x x xx 0 1 x x xx
000 010
xx
001011
001, 011
8-5
INSTRUCTION SET
S3CB519
Table 8-3. Instruction Encoding (Concluded) Instruction MODop1 Invalid Invalid AND SR0, #imm:8 OR SR0, #imm:8 BANK #imm:2 15-13 100 12 11 000 001-011 000 001 010 011 10 9 xx xx xx imm[7:6] imm[7:6] xx x imm [1:0] Invalid LCALL cc, imm:20 LLNK cc, imm:20 LJP cc, imm:20 LD SPR0, #imm:8 AND GPR, adr:8 OR GPR, adr:8 XOR GPR, adr:8 JR cc, imm:9 101
imm [8]
8
7
6
5 00110
4
3
2
1 MODop1 xxx
0
2nd word -
01
xxxxxx imm[5:0]
xxx
0
xxxx cc
10000000-11001111 1101 imm[19:16] imm[15:0]
1
00 01 10 11 cc
SPR0 GPR
IMM[7:0] ADR[7:0]
-
imm[7:0]
CALLS imm:12 LNKS imm:12 CLD GPR, imm:8 CLD imm:8, GPR JNZD GPR, imm:8 SYS #imm:8 COP #imm:12
110
0 1
imm[11:0]
111
0
00 01 10 11
GPR GPR GPR xx imm[11:0]
imm[7:0]
1
NOTES: 1. "x" means not applicable. 2. There are several MODop1 codes that can be used, as described in table 8-9. 3. The operand 1(GPR) of the instruction JNZD is Bank 3's register.
8-6
S3CB519
INSTRUCTION SET
Table 8-4. Index Code Information ("idx") Symbol ID0 ID1 Code 0 1 Index 0 IDH:IDL0 Index 1 IDH:IDL1 Description
Table 8-5. Index Modification Code Information ("mod") Symbol @IDx + offset:5 @[IDx - offset:5] Code 00 01 Function DM[IDx], IDx IDx + offset DM[IDx + (2's complement of offset:5)], IDx IDx + (2's complement of offset:5) @[IDx + offset:5]! @[IDx - offset:5]! 10 11 DM[IDx + offset], IDx IDx DM[IDx + (2's complement of offset:5)], IDx IDx
NOTE: Carry from IDL is propagated to IDH. In case of @[IDx - offset:5] or @[IDx - offset:5]!, the assembler should convert offset:5 to the 2's complement format to fill the operand field (offset[4:0]). Furthermore, @[IDx - 0] and @[IDx - 0]! are converted to @[IDx + 0] and @[IDx + 0]!, respectively.
Table 8-6. Condition Code Information ("cc") Symbol (cc:4) Blank NC or ULT C or UGE Z or EQ NZ or NE OV ULE UGT ZP MI PL ZN SF EC0-EC2
NOTE:
Code 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101-1111 always
Function
C = 0, unsigned less than C = 1, unsigned greater than or equal to Z = 1, equal to Z = 0, not equal to V = 1, overflow - signed value ~C | Z, unsigned less than or equal to C & ~Z, unsigned greater than N = 0, signed zero or positive N = 1, signed negative ~N & ~Z, signed positive Z | N, signed zero or negative Stack Full EC[0] = 1/EC[1] = 1/EC[2] = 1
EC[2:0] is an external input (CalmRISC core's point of view) and used as a condition.
8-7
INSTRUCTION SET
S3CB519
Table 8-7. "ALUop1" Code Information Symbol SLA SL RLC RL SRA SR RRC RR Code 000 001 010 011 100 101 110 111 arithmetic shift left shift left rotate left with carry rotate left arithmetic shift right shift right rotate right with carry rotate right Function
Table 8-8. "ALUop2" Code Information Symbol INC INCC DEC DECC COM COM2 COMC - Code 000 001 010 011 100 101 110 111 increment increment with carry decrement decrement with carry 1's complement 2's complement 1's complement with carry reserved Function
Table 8-9. "MODop1" Code Information Symbol LRET RET IRET NOP BREAK - - - Code 000 001 010 011 100 101 110 111 return by IL return by HS return from interrupt (by HS) no operation reserved for debugger use only reserved reserved reserved Function
8-8
S3CB519
INSTRUCTION SET
QUICK REFERENCE
Operation AND OR XOR ADD SUB CP ADC SBC CPC TM BITS BITR BITC BITT BMS/BMC PUSH POP PUSH POP POP - - SPR - - GPR - - GPR R3 #imm:8 adr:8.bs GPR GPR adr:8 op1 GPR op2 adr:8 #imm:8 GPR @idm op1 op1 & op2 op1 op1 | op2 op1 op1 ^ op2 op1 op1 + op2 op1 op1 + ~op2 + 1 op1 + ~op2 + 1 op1 op1 + op2 + c op1 op1 + ~op2 + c op1 + ~op2 + c op1 & op2 op1 (op2[bit] 1) op1 (op2[bit] 0) op1 ~(op2[bit]) z ~(op2[bit]) TF 1 / 0 HS[sptr] GPR, (sptr sptr + 1) GPR HS[sptr - 1], (sptr sptr - 1) HS[sptr] SPR, (sptr sptr + 1) SPR HS[sptr - 1], (sptr sptr - 1) sptr sptr - 2 - Function Flag z,n z,n z,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n z,n z z z z - - z,n - # of word / cycle 1W1C
8-9
INSTRUCTION SET
S3CB519
SLA SL RLC RL SRA SR RRC RR INC INCC DEC DECC COM COM2 COMC
GPR
-
c op1[7], op1 {op1[6:0], 0} c op1[7], op1 {op1[6:0], 0} c op1[7], op1 {op1[6:0], c} c op[7], op1 {op1[6:0], op1[7]} c op[0], op1 {op1[7],op1[7:1]} c op1[0], op1 {0, op1[7:1]} c op1[0], op1 {c, op1[7:1]} c op1[0], op1 {op1[0], op1[7:1]} op1 op1 + 1 op1 op1 + c op1 op1 + 0FFh op1 op1 + 0FFh + c op1 ~op1 op1 ~op1 + 1 op1 ~op1 + c
c,z,v,n c,z,n c,z,n c,z,n c,z,n c,z,n c,z,n c,z,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n z,n c,z,v,n c,z,v,n
8-10
S3CB519
INSTRUCTION SET
QUICK REFERENCE (Continued)
Operation LD LD LD op1 GPR :bank SPR0 GPR op2 GPR :bank #imm:8 GPR SPR adr:8 @idm #imm:8 TBH/TBL GPR GPR GPR - #imm:8 op1 op2 op1 op2 op1 op2 Function Flag z,n - z,n # of word / cycle 1W1C
LD LD LD LDC AND OR BANK SWAP LCALL cc
SPR TBH/TBL adr:8 @idm @IL @IL+ SR0
op1 op2 op1 op2 op1 op2 (TBH:TBL) PM[(ILX:ILH:ILL)], ILL++ if @IL+ SR0 SR0 & op2 SR0 SR0 | op2 SR0[4:3] op2 op1 op2, op2 op1 (excluding SR0/SR1) If branch taken, push XSTACK, HS[15:0] {PC[15:12],PC[11:0] + 2} and PC op1 else PC[11:0] PC[11:0] + 2 If branch taken, IL[19:0] {PC[19:12], PC[11:0] + 2} and PC op1 else PC[11:0] PC[11:0] + 2 push XSTACK, HS[15:0] {PC[15:12], PC[11:0] + 1} and PC[11:0] op1 IL[19:0] {PC[19:12], PC[11:0] + 1} and PC[11:0] op1 if (Rn == 0) PC PC[delay slot] - 2's complement of imm:8, Rn-else PC PC[delay slot]++, Rn-If branch taken, PC op1 else PC[11:0] < PC[11:0] + 2 If branch taken, PC[11:0] PC[11:0] + op1 else PC[11:0] PC[11:0] + 1
- - - - - 1W2C 1W1C
#imm:2 GPR imm:20
- SPR -
- - - 2W2C
LLNK cc
imm:20
-
-
CALLS LNKS JNZD
imm:12 imm:12 Rn
- - imm:8
- - -
1W2C
LJP cc
imm:20
-
-
2W2C
JR cc
imm:9
-
-
1W2C
NOTE:
op1 - operand1, op2 - operand2, 1W1C - 1-Word 1-Cycle instruction, 1W2C - 1-Word 2-Cycle instruction, 2W2C 2-Word 2-Cycle instruction. The Rn of instruction JNZD is Bank 3's GPR.
8-11
INSTRUCTION SET
S3CB519
QUICK REFERENCE (Concluded)
Operation LRET RET IRET NOP BREAK SYS CLD CLD COP #imm:8 imm:8 GPR #imm:12 - GPR imm:8 - op1 - op2 - PC IL[19:0] PC HS[sptr - 2], (sptr sptr - 2) PC HS[sptr - 2], (sptr sptr - 2) no operation no operation and hold PC no operation but generates SYSCP[7:0] and nSYSID op1 op2, generates SYSCP[7:0], nCLDID, and CLDWR op1 op2, generates SYSCP[7:0], nCLDID, and CLDWR generates SYSCP[11:0] and nCOPID - - z,n - Function Flag - # of word / cycle 1W2C 1W2C 1W2C 1W1C 1W1C 1W1C
NOTES: 1. op1 - operand1, op2 - operand2, sptr - stack pointer register, 1W1C - 1-Word 1-Cycle instruction, 1W2C - 1-Word 2-Cycle instruction 2. Pseudo instructions -- SCF/RCF Carry flag set or reset instruction -- STOP/IDLE MCU power saving instructions -- EI/DI Exception enable and disable instructions -- JP/LNK/CALL If JR/LNKS/CALLS commands (1 word instructions) can access the target address, there is no conditional code in the case of CALL/LNK, and the JP/LNK/CALL commands are assembled to JR/LNKS/CALLS in linking time, or else the JP/LNK/CALL commands are assembled to LJP/LLNK/LCALL (2 word instructions) instructions.
8-12
S3CB519
INSTRUCTION SET
INSTRUCTION GROUP SUMMARY
ALU INSTRUCTIONS "ALU instructions" refer to the operations that use ALU to generate results. ALU instructions update the values in Status Register 1 (SR1), namely carry (C), zero (Z), overflow (V), and negative (N), depending on the operation type and the result. ALUop GPR, adr:8 Performs an ALU operation on the value in GPR and the value in DM[adr:8] and stores the result into GPR. ALUop = ADD, SUB, CP, AND, OR, XOR For SUB and CP, GPR+(not DM[adr:8])+1 is performed. adr:8 is the offset in a specific data memory page. The data memory page is 0 or the value of IDH (Index of Data Memory Higher Byte Register), depending on the value of eid in Status Register 0 (SR0). Operation GPR GPR ALUop DM[00h:adr:8] if eid = 0 GPR GPR ALUop DM[IDH:adr8] if eid = 1 Note that this is an 8-bit operation. Example ADD R0, 80h // Assume eid = 1 and IDH = 01H // R0 R0 + DM[0180h]
ALUop GPR, #imm:8 Stores the result of an ALU operation on GPR and an 8-bit immediate value into GPR. ALUop = ADD, SUB, CP, AND, OR, XOR For SUB and CP, GPR+(not #imm:8)+1 is performed. #imm:8 is an 8-bit immediate value. Operation GPR GPR ALUop #imm:8 Example ADD R0, #7Ah // R0 R0 + 7Ah
8-13
INSTRUCTION SET
S3CB519
ALUop GPRd, GPRs Store the result of ALUop on GPRs and GPRd into GPRd. ALUop = ADD, SUB, CP, AND, OR, XOR For SUB and CP, GPRd + (not GPRs) + 1 is performed. GPRs and GPRd need not be distinct. Operation GPRd GPRd ALUop GPRs GPRd - GPRs when ALUop = CP (comparison only) Example ADD R0, R1 ALUop GPR, @idm Performs ALUop on the value in GPR and DM[ID] and stores the result into GPR. Index register ID is IDH:IDL (IDH:IDL0 or IDH:IDL1). ALUop = ADD, SUB, CP, AND, OR, XOR For SUB and CP, GPR+(not DM[idm])+1 is performed. idm = IDx+off:5, [IDx-offset:5], [IDx+offset:5]!, [IDx-offset:5]! (IDx = ID0 or ID1) Operation GPR - DM[idm] when ALUop = CP (comparison only) GPR GPR ALUop DM[IDx], IDx IDx + offset:5 when idm = IDx + offset:5 GPR GPR ALUop DM[IDx - offset:5], IDx IDx - offset:5 when idm = [IDx - offset:5] GPR GPR ALUop DM[IDx + offset:5] when idm = [IDx + offset:5]! GPR GPR ALUop DM[IDx - offset:5] when idm = [IDx - offset:5]! When carry is generated from IDL (on a post-increment or pre-decrement), it is propagated to IDH. Example ADD R0, @ID0+2 ADD R0, @[ID0-2] ADD R0, @[ID1+2]! ADD R0, @[ID1-2]! // assume ID0 = 02FFh // R0 R0 + DM[02FFh], IDH 03h and IDL0 01h // assume ID0 = 0201h // R0 R0 + DM[01FFh], IDH 01h and IDL0 FFh // assume ID1 = 02FFh // R0 R0 + DM[0301], IDH 02h and IDL1 FFh // assume ID1 = 0200h // R0 R0 + DM[01FEh], IDH 02h and IDL1 00h // R0 R0 + R1
8-14
S3CB519
INSTRUCTION SET
ALUopc GPRd, GPRs Performs ALUop with carry on GPRd and GPRs and stores the result into GPRd. ALUopc = ADC, SBC, CPC GPRd and GPRs need not be distinct. Operation GPRd GPRd + GPRs + C when ALUopc = ADC GPRd GPRd + (not GPRs) + C when ALUopc = SBC GPRd + (not GPRs) + C when ALUopc = CPC (comparison only) Example ADD R0, R2 ADC R1, R3 SUB R0, R2 SBC R1, R3 CP R0, R2 CPC R1, R3 ALUopc GPR, adr:8 Performs ALUop with carry on GPR and DM[adr:8]. Operation GPR GPR + DM[adr:8] + C when ALUopc = ADC GPR GPR + (not DM[adr:8]) + C when ALUopc = SBC GPR + (not DM[adr:8]) + C when ALUopc = CPC (comparison only) CPLop GPR (Complement Operations) CPLop = COM, COM2, COMC Operation COM GPR COM2 GPR COMC GPR Example COM2 R0 COMC R1 // assume R1:R0 is a 16-bit signed number. // COM2 and COMC can be used to get the 2's complement of it. not GPR (logical complement) not GPR + 1 (2's complement of GPR) not GPR + C (logical complement of GPR with carry) // assume R1:R0 and R3:R2 are 16-bit signed or unsigned numbers. // to add two 16-bit numbers, use ADD and ADC. // assume R1:R0 and R3:R2 are 16-bit signed or unsigned numbers. // to subtract two 16-bit numbers, use SUB and SBC. // assume both R1:R0 and R3:R2 are 16-bit unsigned numbers. // to compare two 16-bit unsigned numbers, use CP and CPC.
8-15
INSTRUCTION SET
S3CB519
IncDec GPR (Increment/Decrement Operations) IncDec = INC, INCC, DEC, DECC Operation INC GPR INCC GPR DEC GPR DECC GPR Example INC R0 INCC R1 DEC R0 DECC R1 // assume R1:R0 is a 16-bit number // to increase R1:R0, use INC and INCC. // assume R1:R0 is a 16-bit number // to decrease R1:R0, use DEC and DECC. Increase GPR, i.e., GPR GPR + 1 Increase GPR if carry = 1, i.e., GPR GPR + C Decrease GPR, i.e., GPR GPR + FFh Decrease GPR if carry = 0, i.e., GPR GPR + FFh + C
8-16
S3CB519
INSTRUCTION SET
SHIFT/ROTATE INSTRUCTIONS Shift (Rotate) instructions shift (rotate) the given operand by 1 bit. Depending on the operation performed, a number of Status Register 1 (SR1) bits, namely Carry (C), Zero (Z), Overflow (V), and Negative (N), are set. SL GPR Operation
7 C GPR 0 0
Carry (C) is the MSB of GPR before shifting, Negative (N) is the MSB of GPR after shifting. Overflow (V) is not affected. Zero (Z) will be 1 if the result is 0. SLA GPR Operation
7 C GPR 0 0
Carry (C) is the MSB of GPR before shifting, Negative (N) is the MSB of GPR after shifting. Overflow (V) will be 1 if the MSB of the result is different from C. Z will be 1 if the result is 0. RL GPR Operation
7 C GPR 0
Carry (C) is the MSB of GPR before rotating. Negative (N) is the MSB of GPR after rotatin/g. Overflow (V) is not affected. Zero (Z) will be 1 if the result is 0. RLC GPR Operation
7 0
GPR C
Carry (C) is the MSB of GPR before rotating, Negative (N) is the MSB of GPR after rotating. Overflow (V) is not affected. Zero (Z) will be 1 if the result is 0.
8-17
INSTRUCTION SET
S3CB519
SR GPR Operation
7 0 GPR 0 C
Carry (C) is the LSB of GPR before shifting, Negative (N) is the MSB of GPR after shifting. Overflow (V) is not affected. Zero (Z) will be 1 if the result is 0. SRA GPR Operation
7 GPR 0 C
Carry (C) is the LSB of GPR before shifting, Negative (N) is the MSB of GPR after shifting. Overflow (V) is not affected. Z will be 1 if the result is 0. RR GPR Operation
7 GPR 0 C
Carry (C) is the LSB of GPR before rotating. Negative (N) is the MSB of GPR after rotating. Overflow (V) is not affected. Zero (Z) will be 1 if the result is 0. RRC GPR Operation
7 0
GPR C
Carry (C) is the LSB of GPR before rotating, Negative (N) is the MSB of GPR after rotating. Overflow (V) is not affected. Zero (Z) will be 1 if the result is 0.
8-18
S3CB519
INSTRUCTION SET
LOAD INSTRUCTIONS Load instructions transfer data from data memory to a register or from a register to data memory, or assigns an immediate value into a register. As a side effect, a load instruction placing a value into a register sets the Zero (Z) and Negative (N) bits in Status Register 1 (SR1), if the placed data is 00h and the MSB of the data is 1, respectively. LD GPR, adr:8 Loads the value of DM[adr:8] into GPR. Adr:8 is offset in the page specified by the value of eid in Status Register 0 (SR0). Operation GPR DM[00h:adr:8] if eid = 0 GPR DM[IDH:adr:8] if eid = 1 Note that this is an 8-bit operation. Example LD R0, 80h // assume eid = 1 and IDH= 01H // R0 DM[0180h]
LD GPR, @idm Loads a value from the data memory location specified by @idm into GPR. idm = IDx+off:5, [IDx-offset:5], [IDx+offset:5]!, [IDx-offset:5]! (IDx = ID0 or ID1) Operation GPR GPR GPR GPR DM[IDx], IDx IDx + offset:5 when idm = IDx + offset:5 DM[IDx - offset:5], IDx IDx - offset:5 when idm = [IDx - offset:5] DM[IDx + offset:5] when idm = [IDx + offset:5]! DM[IDx - offset:5] when idm = [IDx - offset:5]!
When carry is generated from IDL (on a post-increment or pre-decrement), it is propagated to IDH. Example LD R0, @[ID0 + 03h]! // assume IDH:IDL0 = 0270h // R0 DM[0273h], IDH:IDL0 0270h
8-19
INSTRUCTION SET
S3CB519
LD REG, #imm:8 Loads an 8-bit immediate value into REG. REG can be either GPR or an SPR0 group register - IDH (Index of Data Memory Higher Byte Register), IDL0 (Index of Data Memory Lower Byte Register)/ IDL1, and Status Register 0 (SR0). #imm:8 is an 8-bit immediate value. Operation REG #imm:8 Example LD R0 #7Ah LD IDH, #03h LD GPR:bs:2, GPR:bs:2 Loads a value of a register from a specified bank into another register in a specified bank. Example LD R0:1, R2:3 LD GPR, TBH/TBL Loads the value of TBH or TBL into GPR. TBH and TBL are 8-bit long registers used exclusively for LDC instructions that access program memory. Therefore, after an LDC instruction, LD GPR, TBH/TBL instruction will usually move the data into GPRs, to be used for other operations. Operation GPR TBH (or TBL) Example LDC @IL LD R0, TBH LD R1, TBL LD TBH/TBL, GPR Loads the value of GPR into TBH or TBL. These instructions are used in pair in interrupt service routines to save and restore the values in TBH/TBL as needed. Operation TBH (or TBL) GPR LD GPR, SPR Loads the value of SPR into GPR. Operation GPR SPR Example LD R0, IDH // R0 IDH // gets a program memory item residing @ ILX:ILH:ILL // R0 in bank 1, R2 in bank 3 // R0 7Ah // IDH 03h
8-20
S3CB519
INSTRUCTION SET
LD SPR, GPR Loads the value of GPR into SPR. Operation SPR GPR Example LD IDH, R0 LD adr:8, GPR Stores the value of GPR into data memory (DM). adr:8 is offset in the page specified by the value of eid in Status Register 0 (SR0). Operation DM[00h:adr:8] GPR if eid = 0 DM[IDH:adr:8] GPR if eid = 1 Note that this is an 8-bit operation. Example LD 7Ah, R0 // assume eid = 1 and IDH = 02h. // DM[027Ah] R0 // IDH R0
LD @idm, GPR Loads a value into the data memory location specified by @idm from GPR. idm = IDx+off:5, [IDx-offset:5], [IDx+offset:5]!, [IDx-offset:5]! (IDx = ID0 or ID1) Operation DM[IDx] GPR, IDx IDx + offset:5 when idm = IDx + offset:5 DM[IDx - offset:5] GPR, IDx IDx - offset:5 when idm = [IDx - offset:5] DM[IDx + offset:5] GPR when idm = [IDx + offset:5]! DM[IDx - offset:5] GPR when idm = [IDx - offset:5]! When carry is generated from IDL (on a post-increment or pre-decrement), it is propagated to IDH. Example LD @[ID0 + 03h]!, R0 // assume IDH:IDL0 = 0170h // DM[0173h] R0, IDH:IDL0 0170h
8-21
INSTRUCTION SET
S3CB519
BRANCH INSTRUCTIONS Branch instructions can be categorized into jump instruction, link instruction, and call instruction. A jump instruction does not save the current PC, whereas a call instruction saves ("pushes") the current PC onto the stack and a link instruction saves the PC in the link register IL. Status registers are not affected. Each instruction type has a 2-word format that supports a 20-bit long jump. JR cc:4, imm:9 imm:9 is a signed number (2's complement), an offset to be added to the current PC to compute the target (PC[19:12]:(PC[11:0] + imm:9)). Operation PC[11:0] PC[11:0] + imm:9 PC[11:0] PC[11:0] + 1 Example L18411: JR Z, 107h LJP cc:4, imm:20 Jumps to the program address specified by imm:20. If program size is less than 64K word, PC[19:16] is not affected. Operation PC[15:0] imm[15:0] if branch taken and program size is less than 64K word PC[19:0] imm[19:0] if branch taken and program size is equal to 64K word or more PC [11:0] PC[11:0] + 1 otherwise Example L18411: LJP Z, 10107h JNZD Rn, imm:8 Jumps to the program address specified by imm:8 if the value of the bank 3 register Rn is not zero. JNZD performs only backward jumps, with the value of Rn automatically decreased. There is one delay slot following the JNZD instruction that is always executed, regardless of whether JNZD is taken or not. Operation If (Rn == 0) PC PC[delay slot] (-) 2's complement of imm:8, Rn Rn - 1 else PC PC[delay slot] + 1, Rn Rn - 1. // assume current PC = 18411h. // next instruction's PC is 10107h If Zero (Z) bit is set // assume current PC = 18411h. // next PC is 18518 (18411h + 107h) if Zero (Z) bit is set. if branch taken (i.e., cc:4 resolves to be true) otherwise
8-22
S3CB519
INSTRUCTION SET
Example LOOP_A:
* * *
// start of loop body
JNZD R0, LOOP_A ADD R1, #2 CALLS imm:12
// jump back to LOOP_A if R0 is not zero // delay slot, always executed (you must use one cycle instruction only)
Saves the current PC on the stack ("pushes" PC) and jumps to the program address specified by imm:12. The current page number PC[19:12] is not changed. Since this is a 1-word instruction, the return address pushed onto the stack is (PC + 1). If nP64KW is low when PC is saved, PC[19:16] is not saved in the stack. Operation HS[sptr][15:0] current PC + 1 and sptr sptr + 2 (push stack) HS[sptr][19:0] current PC + 1 and sptr sptr + 2 (push stack) PC[11:0] imm:12 Example L18411: CALLS 107h // assume current PC = 18411h. // call the subroutine at 18107h, with the current PC pushed // onto the stack (HS 18412h) if nP64KW = 1. if nP64KW = 0 if nP64KW = 1
LCALL cc:4, imm:20 Saves the current PC onto the stack (pushes PC) and jumps to the program address specified by imm:20. Since this is a 2-word instruction, the return address saved in the stack is (PC + 2). If nP64KW, a core input signal is low when PC is saved, 0000111111PC[19:16] is not saved in the stack and PC[19:16] is not set to imm[19:16]. Operation HS[sptr][15:0] current PC + 2 and sptr + 2 (push stack) if branch taken and nP64KW = 0 HS[sptr][19:0] current PC + 2 and sptr + 2 (push stack) if branch taken and nP64KW = 1 PC[15:0] imm[15:0] if branch taken and nP64KW = 0 PC[19:0] imm[19:0] if branch taken and nP64KW = 1 PC[11:0] PC[11:0] + 2 otherwise Example L18411: LCALL NZ, 10107h // assume current PC = 18411h. // call the subroutine at 10107h with the current PC pushed // onto the stack (HS 18413h)
8-23
INSTRUCTION SET
S3CB519
LNKS imm:12 Saves the current PC in IL and jumps to the program address specified by imm:12. The current page number PC[19:12] is not changed. Since this is a 1-word instruction, the return address saved in IL is (PC + 1). If the program size is less than 64K word when PC is saved, PC[19:16] is not saved in ILX. Operation IL[15:0] current PC + 1 IL[19:0] current PC + 1 PC[11:0] imm:12 Example L18411: LNKS 107h // assume current PC = 18411h. // call the subroutine at 18107h, with the current PC saved // in IL (IL[19:0] 18412h) if program size is 64K word or more. if program size is less than 64K word if program size is equal to 64K word or more
LLNK cc:4, imm:20 Saves the current PC in IL and jumps to the program address specified by imm:20. Since this is a 2-word instruction, the return address saved in IL is (PC + 2). If the program size is less than 64K word when PC is saved, PC[19:16] is not saved in ILX. Operation IL[15:0] current PC + 2 if branch taken and program size is less than 64K word IL[19:0] current PC + 2 if branch taken and program size is 64K word or more PC[15:0] imm[15:0] if branch taken and program size is less than 64K word PC[19:0] imm[19:0] if branch taken and program size is 64K word or more PC[11:0] PC[11:0] + 2 otherwise Example L18411: LLNK NZ, 10107h // assume current PC = 18411h. // call the subroutine at 10107h with the current PC saved // in IL (IL[19:0] 18413h) if program size is 64K word or more
RET, IRET Returns from the current subroutine. IRET sets ie (SR0[1]) in addition. If the program size is less than 64K word, PC[19:16] is not loaded from HS[19:16]. Operation PC[15:0] HS[sptr - 2] and sptr sptr - 2 (pop stack) if program size is less than 64K word PC[19:0] HS[sptr - 2] and sptr sptr - 2 (pop stack) if program size is 64K word or more Example RET // assume sptr = 3h and HS[1] = 18407h. // the next PC will be 18407h and sptr is set to 1h
8-24
S3CB519
INSTRUCTION SET
LRET Returns from the current subroutine, using the link register IL. If the program size is less than 64K word, PC[19:16] is not loaded from ILX. Operation PC[15:0] IL[15:0] PC[19:0] IL[19:0] Example LRET // assume IL = 18407h. // the next instruction to execute is at PC = 18407h // if program size is 64K word or more if program size is less than 64K word if program size is 64K word or more
JP/LNK/CALL JP/LNK/CALL instructions are pseudo instructions. If JR/LNKS/CALLS commands (1 word instructions) can access the target address, there is no conditional code in the case of CALL/LNK and the JP/LNK/CALL commands are assembled to JR/LNKS/CALLS in linking time or else the JP/LNK/CALL commands are assembled to LJP/LLNK/LCALL (2 word instructions) instructions.
8-25
INSTRUCTION SET
S3CB519
BIT MANIPULATION INSTRUCTIONS BITop adr:8.bs Performs a bit operation specified by op on the value in the data memory pointed by adr:8 and stores the result into R3 of current GPR bank or back into memory depending on the value of TF bit. BITop = BITS, BITR, BITC, BITT BITS: bit set BITR: bit reset BITC: bit complement BITT: bit test (R3 is not touched in this case) bs: bit location specifier, 0 - 7. Operation R3 DM[00h:adr:8] BITop bs if eid = 0 R3 DM[IDH:adr:8] BITop bs if eid = 1 (no register transfer for BITT) Set the Zero (Z) bit if the result is 0. Example BITS 25h.3 BITT 25h.3 BMC/BMS Clears or sets the TF bit, which is used to determine the destination of BITop instructions. When TF bit is clear, the result of BITop instructions will be stored into R3 (fixed); if the TF bit is set, the result will be written back to memory. Operation TF 0 TF 1 TM GPR, #imm:8 Performs AND operation on GPR and imm:8 and sets the Zero (Z) and Negative (N) bits. No change in GPR. Operation Z, N flag GPR & #imm:8 BITop GPR.bs Performs a bit operation on GPR and stores the result in GPR. Since the equivalent functionality can be achieved using OR GPR, #imm:8, AND GPR, #imm:8, and XOR GPR, #imm:8, this instruction type doesn't have separate op codes. (BMC) (BMS) // assume eid = 0. set bit 3 of DM[00h:25h] and store the result in R3. // check bit 3 of DM[00h:25h] if eid = 0.
8-26
S3CB519
INSTRUCTION SET
AND SR0, #imm:8/OR SR0, #imm:8 Sets/resets bits in SR0 and stores the result back into SR0. Operation SR0 SR0 & #imm:8 SR0 SR0 | #imm:8 BANK #imm:2 Loads SR0[4:3] with #imm[1:0]. Operation SR0[4:3] #imm[1:0]
MISCELLANEOUS INSTRUCTION SWAP GPR, SPR Swaps the values in GPR and SPR. SR0 and SR1 can NOT be used for this instruction. No flag is updated, even though the destination is GPR. Operation temp SPR SPR GPR GPR temp Example SWAP R0, IDH // assume IDH = 00h and R0 = 08h. // after this, IDH = 08h and R0 = 00h.
PUSH REG Saves REG in the stack (Pushes REG into stack). REG = GPR, SPR Operation HS[sptr][7:0] REG and sptr sptr + 1 Example PUSH R0 // assume R0 = 08h and sptr = 2h // then HS[2][7:0] 08h and sptr 3h
8-27
INSTRUCTION SET
S3CB519
POP REG Pops stack into REG. REG = GPR, SPR Operation REG HS[sptr-1][7:0] and sptr sptr - 1 Example POP R0 // assume sptr = 3h and HS[2] = 18407h // R0 07h and sptr 2h
POP Pops 2 bytes from the stack and discards the popped data. NOP Does no work but increase PC by 1. BREAK Does nothing and does NOT increment PC. This instruction is for the debugger only. When this instruction is executed, the processor is locked since PC is not incremented. Therefore, this instruction should not be used under any mode other than the debug mode. SYS #imm:8 Does nothing but increase PC by 1 and generates SYSCP[7:0] and nSYSID signals. CLD GPR, imm:8 GPR (imm:8) and generates SYSCP[7:0], nCLDID, and nCLDWR signals. CLD imm:8, GPR (imm:8) GPR and generates SYSCP[7:0], nCLDID, and nCLDWR signals. COP #imm:12 Generates SYSCP[11:0] and nCOPID signals.
8-28
S3CB519
INSTRUCTION SET
LDC Loads program memory item into register. Operation [TBH:TBL] PM[ILX:ILH:ILL] [TBH:TBL] PM[ILX:ILH:ILL], ILL++ (LDC @IL) (LDC @IL+)
TBH and TBL are temporary registers to hold the transferred program memory items. These can be accessed only by LD GPR and TBL/TBH instruction. Example LD ILX, R1 LD ILH, R2 LD ILL, R3 LDC @IL // assume R1:R2:R3 has the program address to access
// get the program data @(ILX:ILH:ILL) into TBH:TBL
8-29
INSTRUCTION SET
S3CB519
PSEUDO INSTRUCTIONS EI/DI Exceptions enable and disable instruction. Operation SR0 OR SR0,#00000010b SR0 AND SR0,#11111101b (EI) (DI)
Exceptions are enabled or disabled through this instruction. If there is an EI instruction, the SR0.1 is set and reset, when DI instruction. Example DI
* * *
EI SCF/RCF Carry flag set and reset instruction. Operation CP R0,R0 AND R0,R0 (SCF) (RCF)
Carry flag is set or reset through this instruction. If there is an SCF instruction, the SR1.0 is set and reset, when RCF instruction. Example SCF RCF STOP/IDLE MCU power saving instruction. Operation SYS #0Ah SYS #05h (STOP) (IDLE)
The STOP instruction stops the both CPU clock and system clock and causes the microcontroller to enter STOP mode. The IDLE instruction stops the CPU clock while allowing system clock oscillation to continue. Example STOP(or IDLE) NOP NOP NOP
* *
8-30
INSTRUCTION SET
S3CB519
ADC -- Add with Carry
Format: ADC , : GPR : adr:8, GPR + + C ADC adds the values of and and carry (C) and stores the result back into C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. exclusive OR of V and MSB of result.
Operation:
Flags:
. Example:
ADC
R0, 80h
// If eid = 0, R0 R0 + DM[0080h] + C // If eid = 1, R0 R0 + DM[IDH:80h] + C // R0 R0 + R1 + C
ADC ADD ADC
R0, R1 R0, R2 R1, R3
In the last two instructions, assuming that register pair R1:R0 and R3:R2 are 16-bit signed or unsigned numbers. Even if the result of "ADD R0, R2" is not zero, Z flag can be set to `1' if the result of "ADC R1,R3" is zero. Note that zero (Z) flag do not exactly reflect result of 16-bit operation. Therefore when programming 16-bit addition, take care of the change of Z flag.
8-32
S3CB519
INSTRUCTION SET
ADD -- Add
Format: ADD , : GPR : adr:8, #imm:8, GPR, @idm Operation: + ADD adds the values of and and stores the result back into . Flags: C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. exclusive OR of V and MSB of result.
. Example:
Given: IDH:IDL0 = 80FFh, eid = 1 ADD ADD ADD ADD ADD ADD ADD R0, 80h R0, #12h R1, R2 R0, @ID0 + 2 R0, @[ID0 - 3] R0, @[ID0 + 2]! R0, @[ID0 - 2]! // R0 R0 + DM[8080h] // R0 R0 + 12h // R1 R1 + R2 // R0 // R0 // R0 // R0 R0 + DM[80FFh], IDH 81h, IDL0 01h R0 + DM[80FCh], IDH 80h, IDL0 FCh R0 + DM[8101h], IDH 80h, IDL0 FFh R0 + DM[80FDh], IDH 80h, IDL0 FFh
In the last two instructions, the value of IDH:IDL0 is not changed. Refer to Table 8-5 for more detailed explanation about this addressing mode. idm = IDx+offset:5, [IDx-offset:5], [IDx+offset:5]!, [IDx-offset:5]! (IDx = ID0 or ID1)
8-33
INSTRUCTION SET
S3CB519
AND -- Bit-wise AND
Format: AND , : GPR : adr:8, #imm:8, GPR, @idm Operation: & AND performs bit-wise AND on the values in and and stores the result in . Flags: Z: set if result is zero. Reset if not. N: set if the MSB of result is 1. Reset if not. Given: IDH:IDL0 = 01FFh, eid = 1 AND AND AND AND AND AND AND R0, 7Ah R1, #40h R0, R1 R1, @ID0 + 3 R1, @[ID0 - 5] R1, @[ID0 + 7]! R1, @[ID0 - 2]! // R0 R0 & DM[017Ah] // R1 R1 & 40h // R0 R0 & R1 // R1 // R1 // R1 // R1 R1 & DM[01FFh], IDH:IDL0 0202h R1 & DM[01FAh], IDH:IDL0 01FAh R1 & DM[0206h], IDH:IDL0 01FFh R1 & DM[01FDh], IDH:IDL0 01FFh
Example:
In the first instruction, if eid bit in SR0 is zero, register R0 has garbage value because data memory DM[0051h-007Fh] are not mapped in S3CB519/S3FB519. In the last two instructions, the value of IDH:IDL0 is not changed. Refer to Table 8-5 for more detailed explanation about this addressing mode. idm = IDx+offset:5, [IDx-offset:5], [IDx+offset:5]!, [IDx-offset:5]! (IDx = ID0 or ID1)
8-34
S3CB519
INSTRUCTION SET
AND SR0 -- Bit-wise AND with SR0
Format: Operation: AND SR0, #imm:8 SR0 SR0 & imm:8 AND SR0 performs the bit-wise AND operation on the value of SR0 and imm:8 and stores the result in SR0. Flags: Example: - Given: SR0 = 11000010b nIE nIE0 nIE1 EQU EQU EQU AND AND ~02h ~40h ~80h SR0, #nIE | nIE0 | nIE1 SR0, #11111101b
In the first example, the statement "AND SR0, #nIE|nIE0|nIE1" clear all of bits of the global interrupt, interrupt 0 and interrupt 1. On the contrary, cleared bits can be set to `1' by instruction "OR SR0, #imm:8". Refer to instruction OR SR0 for more detailed explanation about enabling bit. In the second example, the statement "AND SR0, #11111101b" is equal to instruction DI, which is disabling interrupt globally.
8-35
INSTRUCTION SET
S3CB519
BANK -- GPR Bank selection
Format: Operation: Flags:
NOTE:
BANK #imm:2 SR0[4:3] imm:2 - For explanation of the CalmRISC banked register file and its usage, please refer to chapter 3.
Example: BANK LD BANK LD #1 R0, #11h #2 R1, #22h // Select register bank 1 // Bank1's R0 11h // Select register bank 2 // Bank2's R1 22h
8-36
S3CB519
INSTRUCTION SET
BITC -- Bit Complement
Format: BITC adr:8.bs bs: 3-digit bit specifier Operation: R3 ((adr:8) ^ (2**bs)) (adr:8) ((adr:8) ^ (2**bs)) if (TF == 0) if (TF == 1)
BITC complements the specified bit of a value read from memory and stores the result in R3 or back into memory, depending on the value of TF. TF is set or clear by BMS/BMC instruction. Flags:
NOTE:
Z: set if result is zero. Reset if not. Since the destination register R3 is fixed, it is not specified explicitly. Given: IDH = 01, DM[0180h] = FFh, eid = 1 BMC BITC BMS BITC // TF 0 // R3 FEh, DM[0180h] = FFh // TF 1 // DM[0180h] FDh
Example:
80h.0
80h.1
8-37
INSTRUCTION SET
S3CB519
BITR -- Bit Reset
Format: BITR adr:8.bs bs: 3-digit bit specifier Operation: R3 ((adr:8) & ((11111111)2 - (2**bs))) (adr:8) ((adr:8) & ((11111111)2 - (2**bs))) if (TF == 0) if (TF == 1)
BITR resets the specified bit of a value read from memory and stores the result in R3 or back into memory, depending on the value of TF. TF is set or clear by BMS/BMC instruction. Flags:
NOTE:
Z: set if result is zero. Reset if not. Since the destination register R3 is fixed, it is not specified explicitly. Given: IDH = 01, DM[0180h] = FFh, eid = 1 BMC BITR BMS BITR // TF 0 // R3 FDh, DM[0180h] = FFh // TF 1 // DM[0180h] FBh
Example:
80h.1
80h.2
8-38
S3CB519
INSTRUCTION SET
BITS -- Bit Set
Format: BITS adr:8.bs bs: 3-digit bit specifier. Operation: R3 ((adr:8) | (2**bs)) (adr:8) ((adr:8) | (2**bs)) if (TF == 0) if (TF == 1)
BITS sets the specified bit of a value read from memory and stores the result in R3 or back into memory, depending on the value of TF. TF is set or clear by BMS/BMC instruction. Flags:
NOTE:
Z: set if result is zero. Reset if not. Since the destination register R3 is fixed, it is not specified explicitly. Given: IDH = 01, DM[0180h] = F0h, eid = 1 BMC BITS BMS BITS // TF 0 // R3 0F2h, DM[0180h] = F0h // TF 1 // DM[0180h] F4h
Example:
80h.1
80h.2
8-39
INSTRUCTION SET
S3CB519
BITT -- Bit Test
Format: BITT adr:8.bs bs: 3-digit bit specifier. Operation: Z ~((adr:8) & (2**bs)) BITT tests the specified bit of a value read from memory. Flags: Example: Z: set if result is zero. Reset if not. Given: DM[0080h] = F7h, eid = 0 BITT JR
* * *
80h.3 Z, %1
// Z flag is set to `1' // Jump to label %1 because condition is true.
%1
BITS NOP
* * *
80h.3
8-40
S3CB519
INSTRUCTION SET
BMC/BMS - TF bit clear/set
Format: Operation: BMS/BMC BMC/BMS clears (sets) the TF bit. TF 0 if BMC TF 1 if BMS TF is a single bit flag which determines the destination of bit operations, such as BITC, BITR, and BITS. Flags:
NOTE:
- BMC/BMS are the only instructions that modify the content of the TF bit. // TF 1 81h.1 // TF 0 81h.2 R0, R3
Example: BMS BITS BMC BITR LD
8-41
INSTRUCTION SET
S3CB519
CALL -- Conditional Subroutine Call (Pseudo Instruction)
Format: CALL cc:4, imm:20 CALL imm:12
If CALLS can access the target address and there is no conditional code (cc:4), CALL command is assembled to CALLS (1-word instruction) in linking time, else the CALL is assembled to LCALL (2-word instruction).
Operation:
Example: CALL
* * *
C, Wait
// HS[sptr][15:0] current PC + 2, sptr sptr + 2 // 2-word instruction // HS[sptr][15:0] current PC + 1, sptr sptr + 2 // 1-word instruction
CALL
* * *
0088h
Wait:
NOP NOP NOP NOP NOP RET
// Address at 0088h
8-42
S3CB519
INSTRUCTION SET
CALLS -- Call Subroutine
Format: Operation: CALLS imm:12 HS[sptr][15:0] current PC + 1, sptr sptr + 2 if the program size is less than 64K word. HS[sptr][19:0] current PC + 1, sptr sptr + 2 if the program size is equal to or over 64K word. PC[11:0] imm:12 CALLS unconditionally calls a subroutine residing at the address specified by imm:12. Flags: Example: CALLS
* * *
-
Wait
Wait:
NOP NOP NOP RET Because this is a 1-word instruction, the saved returning address on stack is (PC + 1).
8-43
INSTRUCTION SET
S3CB519
CLD -- Load into Coprocessor
Format: CLD imm:8, : GPR Operation: (imm:8) CLD loads the value of into (imm:8), where imm:8 is used to access the external coprocessor's address space. Flags: Example: AH AL BH BL EQU EQU EQU EQU
* * *
-
00h 01h 02h 03h
CLD CLD CLD CLD
AH, R0 AL, R1 BH, R2 BL, R3
// A[15:8] R0 // A[7:0] R1 // B[15:8] R2 // B[7:0] R3
The registers A[15:0] and B[15:0] are Arithmetic Unit (AU) registers of MAC816. Above instructions generate SYSCP[7:0], nCLDID and CLDWR signals to access MAC816.
8-44
S3CB519
INSTRUCTION SET
CLD -- Load from Coprocessor
Format: CLD , imm:8 : GPR Operation: (imm:8) CLD loads a value from the coprocessor, whose address is specified by imm:8. Flags: Z: set if the loaded value in is zero. Reset if not. N: set if the MSB of the loaded value in is 1. Reset if not.
Example: AH AL BH BL EQU EQU EQU EQU
* * *
00h 01h 02h 03h
CLD CLD CLD CLD
R0, AH R1, AL R2, BH R3, BL
// R0 A[15:8] // R1 A[7:0] // R2 B[15:8] // R3 B[7:0]
The registers A[15:0] and B[15:0] are Arithmetic Unit (AU) registers of MAC816. Above instructions generate SYSCP[7:0], nCLDID and CLDWR signals to access MAC816.
8-45
INSTRUCTION SET
S3CB519
COM -- 1's or Bit-wise Complement
Format: COM : GPR Operation: ~ COM takes the bit-wise complement operation on and stores the result in . Flags: Z: set if result is zero. Reset if not. N: set if the MSB of result is 1. Reset if not. Given: R1 = 5Ah COM R1 // R1 A5h, N flag is set to `1'
Example:
8-46
S3CB519
INSTRUCTION SET
COM2 -- 2's Complement
Format: COM2 : GPR Operation: ~ + 1 COM2 computes the 2's complement of and stores the result in . Flags: C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. set if result is negative.
Example:
Given: R0 = 00h, R1 = 5Ah COM2 COM2 R0 R1 // R0 00h, Z and C flags are set to `1'. // R1 A6h, N flag is set to `1'.
8-47
INSTRUCTION SET
S3CB519
COMC -- Bit-wise Complement with Carry
Format: COMC : GPR Operation: ~ + C COMC takes the bit-wise complement of , adds carry and stores the result in . Flags: C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. set if result is negative. Reset if not.
Example:
If register pair R1:R0 is a 16-bit number, then the 2's complement of R1:R0 can be obtained by COM2 and COMC as following. COM2 COMC R0 R1
Note that Z flag do not exactly reflect result of 16-bit operation. For example, if 16-bit register pair R1: R0 has value of FF01h, then 2's complement of R1: R0 is made of 00FFh by COM2 and COMC. At this time, by instruction COMC, zero (Z) flag is set to `1' as if the result of 2's complement for 16bit number is zero. Therefore when programming 16-bit comparison, take care of the change of Z flag.
8-48
S3CB519
INSTRUCTION SET
COP -- Coprocessor
Format: Operation: Flags: Example: COP COP #0D01h #0234h // generate 1 word instruction code(FD01h) // generate 1 word instruction code(F234h) COP #imm:12 COP passes imm:12 to the coprocessor by generating SYSCP[11:0] and nCOPID signals. -
The above two instructions are equal to statement "ELD A, #1234h" for MAC816 operation. The microcode of MAC instruction "ELD A, #1234h" is "FD01F234", 2-word instruction. In this, code `F' indicates `COP' instruction.
8-49
INSTRUCTION SET
S3CB519
CP -- Compare
Format: CP , : GPR : adr:8, #imm:8, GPR, @idm Operation: + ~ + 1 CP compares the values of and by subtracting from . Contents of and are not changed. Flags: C: Z: V: N: set if carry is generated. Reset if not. set if result is zero (i.e., and are same). Reset if not. set if overflow is generated. Reset if not. set if result is negative. Reset if not.
Example:
Given: R0 = 73h, R1 = A5h, IDH:IDL0 = 0123h, DM[0123h] = A5, eid = 1 CP CP CP CP CP CP CP R0, 80h R0, #73h R0, R1 R1, @ID0 R1, @[ID0 - 5] R2, @[ID0 + 7]! R2, @[ID0 - 2]! // C flag is set to `1' // Z and C flags are set to `1' // V flag is set to `1' // Z and C flags are set to `1'
In the last two instructions, the value of IDH:IDL0 is not changed. Refer to Table 8-5 for more detailed explanation about this addressing mode. idm = IDx+offset:5, [IDx-offset:5], [IDx+offset:5]!, [IDx-offset:5]! (IDx = ID0 or ID1)
8-50
S3CB519
INSTRUCTION SET
CPC -- Compare with Carry
Format: CPC , : GPR : adr:8, GPR Operation: + ~ + C CPC compares and by subtracting from . Unlike CP, however, CPC adds (C - 1) to the result. Contents of and are not changed. Flags: C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. set if result is negative. Reset if not.
Example:
If register pair R1:R0 and R3:R2 are 16-bit signed or unsigned numbers, then use CP and CPC to compare two 16-bit numbers as follows. CP CPC R0, R1 R2, R3
Because CPC considers C when comparing and , CP and CPC can be used in pair to compare 16-bit operands. But note that zero (Z) flag do not exactly reflect result of 16-bit operation. Therefore when programming 16-bit comparison, take care of the change of Z flag.
8-51
INSTRUCTION SET
S3CB519
DEC -- Decrement
Format: DEC : GPR Operation: + 0FFh DEC decrease the value in by adding 0FFh to . Flags: C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. set if result is negative. Reset if not.
Example:
Given: R0 = 80h, R1 = 00h DEC DEC R0 R1 // R0 7Fh, C, V and N flags are set to `1' // R1 FFh, N flags is set to `1'
8-52
S3CB519
INSTRUCTION SET
DECC -- Decrement with Carry
Format: DECC : GPR Operation: + 0FFh + C DECC decrease the value in when carry is not set. When there is a carry, there is no change in the value of . Flags: C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. set if result is negative. Reset if not.
Example:
If register pair R1:R0 is 16-bit signed or unsigned number, then use DEC and DECC to decrement 16-bit number as follows. DEC DECC R0 R1
Note that zero (Z) flag do not exactly reflect result of 16-bit operation. Therefore when programming 16-bit decrement, take care of the change of Z flag.
8-53
INSTRUCTION SET
S3CB519
DI -- Disable Interrupt (Pseudo Instruction)
Format: Operation: DI Disables interrupt globally. It is same as "AND SR0, #0FDh" . DI instruction sets bit1 (ie: global interrupt enable) of SR0 register to "0" - Given: SR0 = 03h DI // SR0 SR0 & 11111101b
Flags: Example:
DI instruction clears SR0[1] to `0', disabling interrupt processing.
8-54
S3CB519
INSTRUCTION SET
EI -- Enable Interrupt (Pseudo Instruction)
Format: Operation: EI Enables interrupt globally. It is same as "OR SR0, #02h" . EI instruction sets the bit1 (ie: global interrupt enable) of SR0 register to "1" - Given: SR0 = 01h EI // SR0 SR0 | 00000010b
Flags: Example:
The statement "EI" sets the SR0[1] to `1', enabling all interrupts.
8-55
INSTRUCTION SET
S3CB519
IDLE -- Idle Operation (Pseudo Instruction)
Format: Operation: IDLE The IDLE instruction stops the CPU clock while allowing system clock oscillation to continue. Idle mode can be released by an interrupt or reset operation. The IDLE instruction is a pseudo instruction. It is assembled as "SYS #05H", and this generates the SYSCP[7-0] signals. Then these signals are decoded and the decoded signals execute the idle operation. -
The next instruction of IDLE instruction is executed, so please use the NOP instruction after the IDLE instruction.
Flags:
NOTE:
Example: IDLE NOP NOP NOP
* * *
The IDLE instruction stops the CPU clock but not the system clock.
8-56
S3CB519
INSTRUCTION SET
INC -- Increment
Format: INC : GPR Operation: + 1 INC increase the value in . Flags: C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. set if result is negative. Reset if not.
Example:
Given: R0 = 7Fh, R1 = FFh INC INC R0 R1 // R0 80h, V flag is set to `1' // R1 00h, Z and C flags are set to `1'
8-57
INSTRUCTION SET
S3CB519
INCC -- Increment with Carry
Format: INCC : GPR Operation: + C INCC increase the value of only if there is carry. When there is no carry, the value of is not changed. Flags: C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. exclusive OR of V and MSB of result.
Example:
If register pair R1:R0 is 16-bit signed or unsigned number, then use INC and INCC to increment 16-bit number as following. INC INCC R0 R1
Assume R1:R0 is 0010h, statement "INC R0" increase R0 by one without carry and statement "INCC R1" set zero (Z) flag to `1' as if the result of 16-bit increment is zero. Note that zero (Z) flag do not exactly reflect result of 16-bit operation. Therefore when programming 16-bit increment, take care of the change of Z flag.
8-58
S3CB519
INSTRUCTION SET
IRET -- Return from Interrupt Handling
Format: Operation: IRET PC HS[sptr - 2], sptr sptr - 2 IRET pops the return address (after interrupt handling) from the hardware stack and assigns it to PC. The ie (i.e., SR0[1]) bit is set to allow further interrupt generation. Flags:
NOTE:
- The program size (indicated by the nP64KW signal) determines which portion of PC is updated. When the program size is less than 64K word, only the lower 16 bits of PC are updated (i.e., PC[15:0] HS[sptr - 2]). When the program size is 64K word or more, the action taken is PC[19:0] HS[sptr - 2].
Example: SF_EXCEP: NOP
* * *
// Stack full exception service routine
IRET
8-59
INSTRUCTION SET
S3CB519
JNZD -- Jump Not Zero with Delay slot
Format: JNZD , imm:8 : GPR (bank 3's GPR only) imm:8 is an signed number Operation: PC PC[delay slot] - 2's complement of imm:8 - 1 JNZD performs a backward PC-relative jump if evaluates to be non-zero. Furthermore, JNZD decrease the value of . The instruction immediately following JNZD (i.e., in delay slot) is always executed, and this instruction must be 1 cycle instruction. Flags:
NOTE:
- Typically, the delay slot will be filled with an instruction from the loop body. It is noted, however, that the chosen instruction should be "dead" outside the loop for it executes even when the loop is exited (i.e., JNZD is not taken). Given: IDH = 03h, eid = 1 BANK LD LD LD JNZD LD
* * *
Example:
%1
#3 R0, #0FFh R1, #0 IDL0, R0 R0, %B1 @ID0, R1
// R0 is used to loop counter
// If R0 of bank3 is not zero, jump to %1. // Clear register pointed by ID0
This example can be used for RAM clear routine. The last instruction is executed even if the loop is exited.
8-60
S3CB519
INSTRUCTION SET
JP -- Conditional Jump (Pseudo Instruction)
Format: JP cc:4 imm:20 JP cc:4 imm:9 If JR can access the target address, JP command is assembled to JR (1 word instruction) in linking time, else the JP is assembled to LJP (2 word instruction) instruction. There are 16 different conditions that can be used, as described in table 8-6.
Operation:
Example: %1
LD
* * *
R0, #10h
// Assume address of label %1 is 020Dh
JP JP
* * *
Z, %B1 C, %F2
// Address at 0264h // Address at 0265h
%2
LD
* * *
R1, #20h
// Assume address of label %2 is 089Ch
In the above example, the statement "JP Z, %B1" is assembled to JR instruction. Assuming that current PC is 0264h and condition is true, next PC is made by PC[11:0] PC[11:0] + offset, offset value is "64h + A9h" without carry. `A9' means 2's complement of offset value to jump backward. Therefore next PC is 020Dh. On the other hand, statement "JP C, %F2" is assembled to LJP instruction because offset address exceeds the range of imm:9.
8-61
INSTRUCTION SET
S3CB519
JR -- Conditional Jump Relative
Format: JR cc:4 imm:9 cc:4: 4-bit condition code Operation: PC[11:0] PC[11:0] + imm:9 if condition is true. imm:9 is a signed number, which is signextended to 12 bits when added to PC. There are 16 different conditions that can be used, as described in table 8-6. - Unlike LJP, the target address of JR is PC-relative. In the case of JR, imm:9 is added to PC to compute the actual jump address, while LJP directly jumps to imm:20, the target.
Flags:
NOTE:
Example: JR
* * *
Z, %1
// Assume current PC = 1000h
%1
LD
* * *
R0, R1
// Address at 10A5h
After the first instruction is executed, next PC has become 10A5h if Z flag bit is set to `1'. The range of the relative address is from +255 to -256 because imm:9 is signed number.
8-62
S3CB519
INSTRUCTION SET
LCALL -- Conditional Subroutine Call
Format: Operation: LCALL cc:4, imm:20 HS[sptr][15:0] current PC + 2, sptr sptr + 2, PC[15:0] imm[15:0] if the condition holds and the program size is less than 64K word. HS[sptr][19:0] current PC + 2, sptr sptr + 2, PC[19:0] imm:20 if the condition holds and the program size is equal to or over 64K word. PC[11:0] PC[11:0] + 2 otherwise. LCALL instruction is used to call a subroutine whose starting address is specified by imm:20. Flags: Example: LCALL LCALL L1 C, L2 -
Label L1 and L2 can be allocated to the same or other section. Because this is a 2-word instruction, the saved returning address on stack is (PC + 2).
8-63
INSTRUCTION SET
S3CB519
LD adr:8 -- Load into Memory
Format: LD adr:8, : GPR Operation: DM[00h:adr:8] if eid = 0 DM[IDH:adr:8] if eid = 1 LD adr:8 loads the value of into a memory location. The memory location is determined by the eid bit and adr:8. Flags: Example: - Given: IDH = 01h LD 80h, R0
If eid bit of SR0 is zero, the statement "LD 80h, R0" load value of R0 into DM[0080h], else eid bit was set to `1', the statement "LD 80h, R0" load value of R0 into DM[0180h]
8-64
S3CB519
INSTRUCTION SET
LD @idm -- Load into Memory Indexed
Format: LD @idm, : GPR Operation: (@idm) LD @idm loads the value of into the memory location determined by @idm. Details of the @idm format and how the actual address is calculated can be found in chapter 2. Flags: Example: - Given R0 = 5Ah, IDH:IDL0 = 8023h, eid = 1 LD LD LD LD LD @ID0, R0 @ID0 + 3, R0 @[ID0-5], R0 @[ID0+4]!, R0 @[ID0-2]!, R0 // // // // // DM[8023h] 5Ah DM[8023h] 5Ah, IDL0 26h DM[801Eh] 5Ah, IDL0 1Eh DM[8027h] 5Ah, IDL0 23h DM[8021h] 5Ah, IDL0 23h
In the last two instructions, the value of IDH:IDL0 is not changed. Refer to Table 8-5 for more detailed explanation about this addressing mode. idm = IDx+offset:5, [IDx-offset:5], [IDx+offset:5]!, [IDx-offset:5]! (IDx = ID0 or ID1)
8-65
INSTRUCTION SET
S3CB519
LD -- Load Register
Format: LD , : GPR : GPR, SPR, adr:8, @idm, #imm:8 Operation: LD loads a value specified by into the register designated by . Flags: Z: set if result is zero. Reset if not. N: exclusive OR of V and MSB of result. Given: R0 = 5Ah, R1 = AAh, IDH:IDL0 = 8023h, eid = 1 LD LD LD LD LD LD LD LD R0, R1 R1, IDH R2, 80h R0, #11h R0, @ID0+1 R1, @[ID0-2] R2, @[ID0+3]! R3, @[ID0-5]! // R0 AAh // R1 80h // R2 DM[8080h] // R0 11h // R0 // R1 // R2 // R3 DM[8023h], IDL0 24h DM[8021h], IDL0 21h DM[8026h], IDL0 23h DM[801Eh], IDL0 23h
Example:
In the last two instructions, the value of IDH:IDL0 is not changed. Refer to Table 8-5 for more detailed explanation about this addressing mode. idm = IDx+offset:5, [IDx-offset:5], [IDx+offset:5]!, [IDx-offset:5]! (IDx = ID0 or ID1)
8-66
S3CB519
INSTRUCTION SET
LD -- Load GPR:bankd, GPR:banks
Format: LD , : GPR: bankd : GPR: banks Operation: LD loads a value of a register in a specified bank (banks) into another register in a specified bank (bankd). Flags: Z: set if result is zero. Reset if not. N: exclusive OR of V and MSB of result. // Bank1's R2 bank3's R0 // Bank0's R0 bank2's R0
Example: LD LD R2:1, R0:3 R0:0, R0:2
8-67
INSTRUCTION SET
S3CB519
LD -- Load GPR, TBH/TBL
Format: LD , : GPR : TBH/TBL Operation: LD loads a value specified by into the register designated by . Flags: Z: set if result is zero. Reset if not. N: exclusive OR of V and MSB of result. Given: register pair R1:R0 is 16-bit unsigned data. LDC LD LD @IL R1, TBH R0, TBL // TBH:TBL PM[ILX:ILH:ILL] // R1 TBH // R0 TBL
Example:
8-68
S3CB519
INSTRUCTION SET
LD -- Load TBH/TBL, GPR
Format: LD , : TBH/TBL : GPR Operation: LD loads a value specified by into the register designated by . Flags: Example: - Given: register pair R1:R0 is 16-bit unsigned data. LD LD TBH, R1 TBL, R0 // TBH R1 // TBL R0
8-69
INSTRUCTION SET
S3CB519
LD SPR
Format:
-- Load SPR
LD , : SPR : GPR
Operation:
LD SPR loads the value of a GPR into an SPR. Refer to Table 3-1 for more detailed explanation about kind of SPR.
Flags: Example:
- Given: register pair R1:R0 = 1020h LD LD ILH, R1 ILL, R0 // ILH 10h // ILL 20h
8-70
S3CB519
INSTRUCTION SET
LD SPR0 -- Load SPR0 Immediate
Format: Operation: LD SPR0, #imm:8 SPR0 imm:8 LD SPR0 loads an 8-bit immediate value into SPR0. Flags: Example: - Given: eid = 1, idb = 0 (index register bank 0 selection) LD LD LD LD IDH, #80h IDL1, #44h IDL0, #55h SR0, #02h // IDH point to page 80h
The last instruction set ie (global interrupt enable) bit to `1'. Special register group 1 (SPR1) registers are not supported in this addressing mode.
8-71
INSTRUCTION SET
S3CB519
LDC -- Load Code
Format: LDC : @IL, @IL+ Operation: TBH:TBL PM[ILX:ILH:ILL] ILL ILL + 1 (@IL+ only) LDC loads a data item from program memory and stores it in the TBH:TBL register pair. @IL+ increase the value of ILL, efficiently implementing table lookup operations. Flags: Example: LD LD LD LDC LD LD ILX, R1 ILH, R2 ILL, R3 @IL R1, TBH R0, TBL -
// Loads value of PM[ILX:ILH:ILL] into TBH:TBL // Move data in TBH:TBL to GPRs for further processing
The statement "LDC @IL" do not increase, but if you use statement "LDC @IL+", ILL register is increased by one after instruction execution.
8-72
S3CB519
INSTRUCTION SET
LJP -- Conditional Jump
Format: LJP cc:4, imm:20 cc:4: 4-bit condition code Operation: PC[15:0] imm[15:0] if condition is true and the program size is less than 64K word. If the program is equal to or larger than 64K word, PC[19:0] imm[19:0] as long as the condition is true. There are 16 different conditions that can be used, as described in table 8-6. - LJP cc:4 imm:20 is a 2-word instruction whose immediate field directly specifies the target address of the jump.
Flags:
NOTE:
Example: LJP
* * *
C, %1
// Assume current PC = 0812h
%1
LD
* * *
R0, R1
// Address at 10A5h
After the first instruction is executed, LJP directly jumps to address 10A5h if condition is true.
8-73
INSTRUCTION SET
S3CB519
LLNK -- Linked Subroutine Call Conditional
Format: LLNK cc:4, imm:20 cc:4: 4-bit condition code Operation: If condition is true, IL[19:0] {PC[19:12], PC[11:0] + 2}. Further, when the program is equal to or larger than 64K word, PC[19:0] imm[19:0] as long as the condition is true. If the program is smaller than 64K word, PC[15:0] imm[15:0]. There are 16 different conditions that can be used, as described in table 8-6. Flags:
NOTE:
- LLNK is used to conditionally to call a subroutine with the return address saved in the link register (IL) without stack operation. This is a 2-word instruction.
Example: LLNK NOP
* * *
Z, %1
// Address at 005Ch, ILX:ILH:ILL 00:00:5Eh // Address at 005Eh
%1
LD
* * *
R0, R1
LRET
8-74
S3CB519
INSTRUCTION SET
LNK -- Linked Subroutine Call (Pseudo Instruction)
Format: LNK cc:4, imm:20 LNK imm:12 If LNKS can access the target address and there is no conditional code (cc:4), LNK command is assembled to LNKS (1 word instruction) in linking time, else the LNK is assembled to LLNK (2 word instruction).
Operation:
Example: LNK LNK NOP
* * *
Z, Link1 Link2
// Equal to "LLNK Z, Link1" // Equal to "LNKS Link2"
Link2:
NOP
* * *
LRET Subroutines section CODE, ABS 0A00h Subroutines Link1: NOP
* * *
LRET
8-75
INSTRUCTION SET
S3CB519
LNKS -- Linked Subroutine Call
Format: Operation: LNKS imm:12 IL[19:0] {PC[19:12], PC[11:0] + 1} and PC[11:0] imm:12 LNKS saves the current PC in the link register and jumps to the address specified by imm:12. - LNKS is used to call a subroutine with the return address saved in the link register (IL) without stack
operation.
Flags:
NOTE:
Example: LNKS NOP
* * *
Link1
// Address at 005Ch, ILX:ILH:ILL 00:00:5Dh // Address at 005Dh
Link1:
NOP
* * *
LRET
8-76
S3CB519
INSTRUCTION SET
LRET -- Return from Linked Subroutine Call
Format: Operation: LRET PC IL[19:0] LRET returns from a subroutine by assigning the saved return address in IL to PC. -
Flags: Example: Link1:
LNK NOP
* * *
Link1
LRET
; PC[19:0] ILX:ILH:ILL
8-77
INSTRUCTION SET
S3CB519
NOP -- No Operation
Format: Operation: NOP No operation. When the instruction NOP is executed in a program, no operation occurs. Instead, the instruction time is delayed by approximately one machine cycle per each NOP instruction encountered.
Flags: Example:
-
NOP
8-78
S3CB519
INSTRUCTION SET
OR -- Bit-wise OR
Format: OR , : GPR : adr:8, #imm:8, GPR, @idm Operation: | OR performs the bit-wise OR operation on and and stores the result in . Z: set if result is zero. Reset if not. N: exclusive OR of V and MSB of result. Given: IDH:IDL0 = 031Eh, eid = 1 OR OR OR OR OR OR OR R0, 80h R1, #40h R1, R0 R0, @ID0 R1, @[ID0-1] R2, @[ID0+1]! R3, @[ID0-1]! // R0 R0 | DM[0380h] // Mask bit6 of R1 // R1 R1 | R0 // R0 // R1 // R2 // R3 R0 | DM[031Eh], IDL0 1Eh R1 | DM[031Dh], IDL0 1Dh R2 | DM[031Fh], IDL0 1Eh R3 | DM[031Dh], IDL0 1Eh
Flags:
Example:
In the last two instructions, the value of IDH:IDL0 is not changed. Refer to Table 8-5 for more detailed explanation about this addressing mode. idm = IDx+offset:5, [IDx-offset:5], [IDx+offset:5]!, [IDx-offset:5]! (IDx = ID0 or ID1)
8-79
INSTRUCTION SET
S3CB519
OR SR0 -- Bit-wise OR with SR0
Format: Operation: OR SR0, #imm:8 SR0 SR0 | imm:8 OR SR0 performs the bit-wise OR operation on SR0 and imm:8 and stores the result in SR0. Flags: Example: - Given: SR0 = 00000000b EID IE IDB1 IE0 IE1 EQU EQU EQU EQU EQU OR OR 01h 02h 04h 40h 80h SR0, #IE | IE0 | IE1 SR0, #00000010b
In the first example, the statement "OR SR0, #EID|IE|IE0" set global interrupt(ie), interrupt 0(ie0) and interrupt 1(ie1) to `1' in SR0. On the contrary, enabled bits can be cleared with instruction "AND SR0, #imm:8". Refer to instruction AND SR0 for more detailed explanation about disabling bit. In the second example, the statement "OR SR0, #00000010b" is equal to instruction EI, which is enabling interrupt globally.
8-80
S3CB519
INSTRUCTION SET
POP -- POP
Format: Operation: POP sptr sptr - 2 POP decrease sptr by 2. The top two bytes of the hardware stack are therefore invalidated. Flags: Example: - Given: sptr[5:0] = 001010b POP This POP instruction decrease sptr[5:0] by 2. Therefore sptr[5:0] is 001000b.
8-81
INSTRUCTION SET
S3CB519
POP -- POP to Register
Format: POP : GPR, SPR Operation: HS[sptr - 1], sptr sptr - 1 POP copies the value on top of the stack to and decrease sptr by 1. Flags: Z: set if the value copied to is zero. Reset if not. N: set if the value copied to is negative. Reset if not. When is SPR, no flags are affected, including Z and N. // R0 HS[sptr-1], sptr sptr-1 // IDH HS[sptr-1], sptr sptr-1
Example: POP POP R0 IDH
In the first instruction, value of HS[sptr-1] is loaded to R0 and the second instruction "POP IDH" load value of HS[sptr-1] to register IDH. Refer to chapter 5 for more detailed explanation about POP operations for hardware stack.
8-82
S3CB519
INSTRUCTION SET
PUSH -- Push Register
Format: PUSH : GPR, SPR Operation: HS[sptr] , sptr sptr + 1 PUSH stores the value of on top of the stack and increase sptr by 1. Flags: Example: PUSH PUSH R0 IDH // HS[sptr] R0, sptr sptr + 1 // HS[sptr] IDH, sptr sptr + 1 -
In the first instruction, value of register R0 is loaded to HS[sptr-1] and the second instruction "PUSH IDH" load value of register IDH to HS[sptr-1]. Current HS pointed by stack point sptr[5:0] be emptied. Refer to chapter 5 for more detailed explanation about PUSH operations for hardware stack.
8-83
INSTRUCTION SET
S3CB519
RET -- Return from Subroutine
Format: Operation: RET PC HS[sptr - 2], sptr sptr - 2 RET pops an address on the hardware stack into PC so that control returns to the subroutine call site. Flags: Example: - Given: sptr[5:0] = 001010b CALLS
* * *
Wait
// Address at 00120h
Wait:
NOP NOP NOP NOP NOP RET
// Address at 01000h
After the first instruction CALLS execution, "PC+1", 0121h is loaded to HS[5] and hardware stack pointer sptr[5:0] have 001100b and next PC became 01000h. The instruction RET pops value 0121h on the hardware stack HS[sptr-2] and load to PC then stack pointer sptr[[5:0] became 001010b.
8-84
S3CB519
INSTRUCTION SET
RL -- Rotate Left
Format: RL : GPR Operation: C [7], {[6:0], [7]} RL rotates the value of to the left and stores the result back into . The original MSB of is copied into carry (C). Flags: C: set if the MSB of (before rotating) is 1. Reset if not. Z: set if result is zero. Reset if not. N: set if the MSB of (after rotating) is 1. Reset if not. Given: R0 = 01001010b, R1 = 10100101b RL RL R0 R1 // N flag is set to `1', R0 10010100b // C flag is set to `1', R1 01001011b
Example:
8-85
INSTRUCTION SET
S3CB519
RLC -- Rotate Left with Carry
Format: RLC : GPR Operation: C [7], {[6:0], C} RLC rotates the value of to the left and stores the result back into . The original MSB of is copied into carry (C), and the original C bit is copied into [0]. Flags: C: set if the MSB of (before rotating) is 1. Reset if not. Z: set if result is zero. Reset if not. N: set if the MSB of (after rotating) is 1. Reset if not. Given: R2 = A5h, if C = 0 RLC RL RLC R2 R0 R1 // R2 4Ah, C flag is set to `1'
Example:
In the second example, assuming that register pair R1:R0 is 16-bit number, then RL and RLC are used for 16-bit rotate left operation. But note that zero (Z) flag do not exactly reflect result of 16-bit operation. Therefore when programming 16-bit decrement, take care of the change of Z flag.
8-86
S3CB519
INSTRUCTION SET
RR -- Rotate Right
Format: RR : GPR Operation: C [0], {[0], [7:1]} RR rotates the value of to the right and stores the result back into . The original LSB of is copied into carry (C). Flags: C: set if the LSB of (before rotating) is 1. Reset if not. Z: set if result is zero. Reset if not. N: set if the MSB of (after rotating) is 1. Reset if not. Given: R0 = 01011010b, R1 = 10100101b RR RR R0 R1 // No change of flag, R0 00101101b // C and N flags are set to `1', R1 11010010b
Example:
8-87
INSTRUCTION SET
S3CB519
RRC -- Rotate Right with Carry
Format: RRC : GPR Operation: C [0], {C, [7:1]} RRC rotates the value of to the right and stores the result back into . The original LSB of is copied into carry (C), and C is copied to the MSB. Flags: C: set if the LSB of (before rotating) is 1. Reset if not. Z: set if result is zero. Reset if not. N: set if the MSB of (after rotating) is 1. Reset if not. Given: R2 = A5h, if C = 0 RRC RR RRC R2 R0 R1 // R2 52h, C flag is set to `1'
Example:
In the second example, assuming that register pair R1:R0 is 16-bit number, then RR and RRC are used for 16-bit rotate right operation. But note that zero (Z) flag do not exactly reflect result of 16-bit operation. Therefore when programming 16-bit decrement, take care of the change of Z flag.
8-88
S3CB519
INSTRUCTION SET
SBC -- Subtract with Carry
Format: SBC , : GPR : adr:8, GPR Operation: + ~ + C SBC computes ( - ) when there is carry and ( - - 1) when there is no carry. Flags: C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. set if result is negative. Reset if not.
Example: SBC R0, 80h // If eid = 0, R0 R0 + ~DM[0080h] + C // If eid = 1, R0 R0 + ~DM[IDH:80h] + C // R0 R0 + ~R1 + C
SBC SUB SBC
R0, R1 R0, R2 R1, R3
In the last two instructions, assuming that register pair R1:R0 and R3:R2 are 16-bit signed or unsigned numbers. Even if the result of "ADD R0, R2" is not zero, zero (Z) flag can be set to `1' if the result of "SBC R1,R3" is zero. Note that zero (Z) flag do not exactly reflect result of 16-bit operation. Therefore when programming 16-bit addition, take care of the change of Z flag.
8-89
INSTRUCTION SET
S3CB519
SL -- Shift Left
Format: SL : GPR Operation: C [7], {[6:0], 0} SL shifts to the left by 1 bit. The MSB of the original is copied into carry (C). Flags: C: set if the MSB of (before shifting) is 1. Reset if not. Z: set if result is zero. Reset if not. N: set if the MSB of (after shifting) is 1. Reset if not. Given: R0 = 01001010b, R1 = 10100101b SL SL R0 R1 // N flag is set to `1', R0 10010100b // C flag is set to `1', R1 01001010b
Example:
8-90
S3CB519
INSTRUCTION SET
SLA -- Shift Left Arithmetic
Format: SLA : GPR Operation: C [7], {[6:0], 0} SLA shifts to the left by 1 bit. The MSB of the original is copied into carry (C). Flags: C: Z: V: N: set if the MSB of (before shifting) is 1. Reset if not. set if result is zero. Reset if not. set if the MSB of the result is different from C. Reset if not. set if the MSB of (after shifting) is 1. Reset if not.
Example:
Given: R0 = AAh SLA R0 // C, V, N flags are set to `1', R0 54h
8-91
INSTRUCTION SET
S3CB519
SR -- Shift Right
Format: SR : GPR Operation: C [0], {0, [7:1]} SR shifts to the right by 1 bit. The LSB of the original (i.e., [0]) is copied into carry (C). Flags: C: set if the LSB of (before shifting) is 1. Reset if not. Z: set if result is zero. Reset if not. N: set if the MSB of (after shifting) is 1. Reset if not. Given: R0 = 01011010b, R1 = 10100101b SR SR R0 R1 // No change of flags, R0 00101101b // C flag is set to `1', R1 01010010b
Example:
8-92
S3CB519
INSTRUCTION SET
SRA -- Shift Right Arithmetic
Format: SRA : GPR Operation: C [0], {[7], [7:1]} SRA shifts to the right by 1 bit while keeping the sign of . The LSB of the original (i.e., [0]) is copied into carry (C). Flags: C: set if the LSB of (before shifting) is 1. Reset if not. Z: set if result is zero. Reset if not. N: set if the MSB of (after shifting) is 1. Reset if not.
SRA keeps the sign bit or the MSB ([7]) in its original position. If SRA is executed `N' times, N significant bits will be set, followed by the shifted bits.
NOTE:
Example:
Given: R0 = 10100101b SRA SRA SRA SRA R0 R0 R0 R0 // C, N flags are set to `1', R0 11010010b // N flag is set to `1', R0 11101001b // C, N flags are set to `1', R0 11110100b // N flags are set to `1', R0 11111010b
8-93
INSTRUCTION SET
S3CB519
STOP -- Stop Operation (pseudo instruction)
Format: Operation: STOP The STOP instruction stops the both the CPU clock and system clock and causes the microcontroller to enter the STOP mode. In the STOP mode, the contents of the on-chip CPU registers, peripheral registers, and I/O port control and data register are retained. A reset operation or external or internal interrupts can release stop mode. The STOP instruction is a pseudo instruction. It is assembled as "SYS #0Ah", which generates the SYSCP[7-0] signals. These signals are decoded and stop the operation. The next instruction of STOP instruction is executed, so please use the NOP instruction after the STOP instruction.
NOTE:
Example: STOP NOP NOP NOP
* * *
In this example, the NOP instructions provide the necessary timing delay for oscillation stabilization before the next instruction in the program sequence is executed. Refer to the timing diagrams of oscillation stabilization, as described in Figure 18-3, 18-4
8-94
S3CB519
INSTRUCTION SET
SUB -- Subtract
Format: SUB , : GPR : adr:8, #imm:8, GPR, @idm Operation: + ~ + 1 SUB adds the value of with the 2's complement of to perform subtraction on and Flags: C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. set if result is negative. Reset if not.
Example:
Given: IDH:IDL0 = 0150h, DM[0143h] = 26h, R0 = 52h, R1 = 14h, eid = 1 SUB SUB SUB SUB SUB SUB SUB R0, 43h R1, #16h R0, R1 R0, @ID0+1 R0, @[ID0-2] R0, @[ID0+3]! R0, @[ID0-2]! // R0 R0 + ~DM[0143h] + 1 = 2Ch // R1 FEh, N flag is set to `1' // R0 R0 + ~R1 + 1 = 3Eh // R0 // R0 // R0 // R0 R0 + ~DM[0150h] + 1, IDL0 51h R0 + ~DM[014Eh] + 1, IDL0 4Eh R0 + ~DM[0153h] + 1, IDL0 50h R0 + ~DM[014Eh] + 1, IDL0 50h
In the last two instructions, the value of IDH:IDL0 is not changed. Refer to Table 8-5 for more detailed explanation about this addressing mode. The example in the SBC description shows how SUB and
SBC can be used in pair to subtract a 16-bit number from another.
idm = IDx+offset:5, [IDx-offset:5], [IDx+offset:5]!, [IDx-offset:5]! (IDx = ID0 or ID1)
8-95
INSTRUCTION SET
S3CB519
SWAP -- Swap
Format: SWAP , : GPR : SPR Operation: , SWAP swaps the values of the two operands. Flags:
NOTE:
- Among the SPRs, SR0 and SR1 can not be used as . Given: IDH:IDL0 = 8023h, R0 = 56h, R1 = 01h SWAP SWAP R1, IDH R0, IDL0 // R1 80h, IDH 01h // R0 23h, IDL0 56h
Example:
After execution of instructions, index registers IDH:IDL0 (ID0) have address 0156h.
8-96
S3CB519
INSTRUCTION SET
SYS -- System
Format: Operation: Flags:
NOTE:
SYS #imm:8 SYS generates SYSCP[7:0] and nSYSID signals. - Mainly used for system peripheral interfacing.
Example: SYS SYS #0Ah #05h
In the first example, statement "SYS #0Ah" is equal to STOP instruction and second example "SYS #05h" is equal to IDLE instruction. This instruction does nothing but increase PC by one and generates SYSCP[7:0] and nSYSID signals.
8-97
INSTRUCTION SET
S3CB519
TM -- Test Multiple Bits
Format: TM , #imm:8 : GPR Operation: TM performs the bit-wise AND operation on and imm:8 and sets the flags. The content of is not changed. Z: set if result is zero. Reset if not. N: set if result is negative. Reset if not. Given: R0 = 01001101b TM R0, #00100010b // Z flag is set to `1'
Flags:
Example:
8-98
S3CB519
INSTRUCTION SET
XOR -- Exclusive OR
Format: XOR , : GPR : adr:8, #imm:8, GPR, @idm Operation: ^ XOR performs the bit-wise exclusive-OR operation on and and stores the result in . Flags: Example: Z: set if result is zero. Reset if not. N: set if result is negative. Reset if not. Given: IDH:IDL0 = 8080h, DM[8043h] = 26h, R0 = 52h, R1 = 14h, eid = 1 XOR XOR XOR XOR XOR XOR XOR R0, 43h R1, #00101100b R0, R1 R0, @ID0 R0, @[ID0-2] R0, @[ID0+3]! R0, @[ID0-5]! // R0 74h // R1 38h // R0 46h // R0 // R0 // R0 // R0 R0 ^ DM[8080h], IDL0 81h R0 ^ DM[807Eh], IDL0 7Eh R0 ^ DM[8083h], IDL0 80h R0 ^ DM[807Bh], IDL0 80h
In the last two instructions, the value of IDH:IDL0 is not changed. Refer to Table 8-5 for more detailed explanation about this addressing mode. idm = IDx+offset:5, [IDx-offset:5], [IDx+offset:5]!, [IDx-offset:5]! (IDx = ID0 or ID1)
8-99
INSTRUCTION SET
S3CB519
NOTES
8-100
S3CB519
CLOCK CIRCUIT
9
OVERVIEW
CLOCK CIRCUIT
The S3CB519 microcontroller has two oscillator circuits: a main system clock circuit and a subsystem clock circuit. The CPU and peripheral hardware operate at the system clock frequency supplied by these circuits. The maximum CPU clock frequency is determined by PCON register setting. SYSTEM CLOCK CIRCUIT The system clock circuit has the following components: -- External crystal or ceramic resonator oscillation source (or an external clock source) -- Oscillator stop and wake-up functions -- Programmable frequency divider for the CPU clock (fOSC divided by 1, 2, 4, 8, 16, 32, 64, 128) -- System clock control register, PCON
9-1
CLOCK CIRCUIT
S3CB519
INT
Stop Release
Stop Release
INT
Dividing Ability Sub-System Oscillator Circuit
OSCCON.4 Watch Timer
Main-System Oscillator Circuit
fx
fxt
Selector 1 Stop fxx
OSCCON.3 OSCCON.0 1/1 - 1/4096 Frequency Dividing Circuit 1/1 1/2 1/4 1/8 1/16 1/32 1/64 1/128
Stop
OSCCON.2
Peripheral
PCON.2 - .0
Selector 2 CPU CPU Stop Signal by Idle or Stop
SYS #05H SYS #0AH
Idle Stop
Oscillator Control Circuit
Figure 9-1. System Clock Circuit Diagram
9-2
S3CB519
CLOCK CIRCUIT
Power Control Register (PCON) 02H, R/W, Reset: 04H MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used
System clock selection bits: 000 = fxx/128 001 = fxx/64 010 = fxx/32 011 = fxx/16 100 = fxx/8 101 = fxx/4 110 = fxx/2 111 = fxx/1
Figure 9-2. Power Control Register (PCON)
Oscillator Control Register (OSCCON) 03H, R/W, Reset: 00H MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
System clock source selection bits: 0 = Mainsystem oscillator select 1 = Subsystem oscillator select Not used Not used Subsystem oscillator control bits: 0 = Subsystem oscillator RUN 1 = Subsystem oscillator STOP Mainsystem oscillator control bits: 0 = Mainsystem oscillator RUN 1 = Mainsystem oscillator STOP Subsystem oscillator driving ability selection bits: 0 = Strong drive 1 = Normal drive
NOTE:
The oscillator selected by the OSCCON.0 can be stopped only by the "stop" instruction. It cannot be stopped by the OSCCON settings.
Figure 9-3. Oscillator Control Register (OSCCON)
9-3
CLOCK CIRCUIT
S3CB519
NOTES
9-4
S3CB519
nRESET AND POWER-DOWN
10
OVERVIEW
nRESET AND POWER-DOWN
During a power-on reset, the voltage at VDD goes to High level and the nRESET pin is forced to Low level. The reset signal is input through a schmitt trigger circuit where it is then synchronized with the CPU clock. This procedure brings S3CB519 into a known operating status. For the time for CPU clock oscillation to stabilize, the nRESET pin must be held to low level for a minimum time interval after the power supply comes within tolerance. (For the minimum time interval, see the electrical characteristic). In summary, the following sequence of events occurs during a reset operation: -- All interrupts are disabled. -- The watchdog function (basic timer) is enabled. -- Ports are set to input mode except port 5 which is set to output mode. -- Peripheral control and data registers are disabled and reset to their default hardware values. -- The program counter (PC) is loaded with the program reset address in the ROM, 00000H. -- When the programmed oscillation stabilization time interval has elapsed, the instruction stored in ROM location 00000H is fetched and executed. NOTE To program the duration of the oscillation stabilization interval, make the appropriate settings to the watchdog timer control register, WDTCON, before entering STOP mode.
10-1
nRESET AND POWER-DOWN
S3CB519
NOTES
10-2
S3CB519
I/O PORTS
11
OVERVIEW
PORT 0
I/O PORTS
The S3CB519 has five I/O ports (P0-P4) for general I/O and one output port (P5) dedicated for the key-strobe with LCD segment data.
Two 8-bit control registers are used to configure the port 0 pins: P0CONH for pins P0.4-P0.6 and P0CONL for pins P0.0-P0.3. Each byte contains four bit-pairs and each bit-pair configures one pin. The P0CONH and the P0CONL registers also control the alternative functions. For example, when bits 4 and 5 of P0CONL are "00", P0.2 is selected for the input mode. In this mode, you can set P0.2 as a normal input or an interrupt 2 or a timer 0 clock input by controlling P0INT and T0CON. P0INT and P0EDGE registers control the interrupt functions for INT0-INT6.
Port 0 Control Register, Low Byte (P0CONL) 21H, R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
P0.3/INT3/ TACK/BLD
P0.2/INT2/ P0.1/INT1/T0/ T0CAP/ T0CK/BUZ T0PWM
P0.0/INT0/TB
P0CONL bit-pair pin configuration settings: 00 01 10 11 Input mode (INT0 for P0.0, INT1/T0CAP for P0.1, INT2/T0CK for P0.2, INT3/TACK for P0.3) Input mode, pull-up (INT0 for P0.0, INT1/T0CAP for P0.1, INT2/T0CK for P0.2, INT3/TACK for P0.3) Alternative mode (TB for P0.0, T0/T0PWM for P0.1, BUZ for P0.2, BLD for P0.3) Output mode, push-pull
Figure 11-1. Port 0 Low-byte Control Register (P0CONL)
11-1
I/O PORTS
S3CB519
Port 0 Control Register, High Byte (P0CONH) 20H, R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used P0.6/INT6/SI P0.5/INT5/SO
P0.4/INT4/SCK
P0CONH bit-pair pin configuration settings: 00 01 10 11 Input mode (INT4/SCK input for P0.4, INT5 for P0.5, INT6/SI for P0.6) Input mode, pull-up (INT4/SCK input for P0.4, INT5 for P0.5, INT6/SI for P0.6) Alternative mode (SCK output for P0.4, SO for P0.5, High-impedance for P0.6) Output mode, push-pull
Figure 11-2. Port 0 High-byte Control Register (P0CONH)
Port 0 Interrupt Control Register (P0INT) 22H, R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used
P0.0/INT0 P0.1/INT1
P0.6/INT6 P0.5/INT5
P0.2/INT2 P0.3/INT3
P0.4/INT4 P0INT bit settings: 0 1 Disable interrupt Enable interrupt
Figure 11-3. Port 0 Interrupt Control Register (P0INT)
11-2
S3CB519
I/O PORTS
Port 0 Interrupt Edge Control Register (P0EDGE) 23H, R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used
P0.0/INT0 P0.1/INT1
P0.6/INT6 P0.5/INT5
P0.2/INT2 P0.3/INT3
P0.4/INT4 P0EDGE bit settings: 0 1 Falling edge detection Rising edge detection
Figure 11-4. Port 0 Interrupt Edge Control Register (P0EDGE)
11-3
I/O PORTS
S3CB519
PORT 1 P1CON contains four bit-pairs and bit-pair configures one pin. P1INT controls the interrupt function for KS0-KS3. When the alternative mode is selected, KS0-KS3 can be used as key scan inputs with P5 (shared with LCD SEG) strobe.
Port 1 Control Register (P1CON) 24H, R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
P1.3/KS3
P1.2/KS2
P1.1/KS1
P1.0/KS0
P1CON bit-pair pin configuration settings: 00 01 10 Input mode (KSx interrupt) Input mode, pull-up (KSx interrupt) Alternative mode - When key strobe is off (P5CON.7 = 'Low'), High-impedance - Else other state: Key scan mode (KSx interrupt) Output mode, push-pull
11
Figure 11-5. Port 1 Control Register (P1CON)
Port 1 Interrupt Control Register (P1INT) 25H, R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
P1.3/KS3
P1.2/KS2
P1.1/KS1
P1.0/KS0
P1INT bit-pair pin configuration settings: 0x 10 11 NOTE: Interrupt disable Interrupt enable, falling edge detection Interrupt enable, rising edge detection
When key scan mode, P1INT setting has no meaning
Figure 11-6. Port 1 Interrupt Control Register (P1INT)
11-4
S3CB519
I/O PORTS
PORT 2 P2CON and P3CON contain two nibbles each and each nibble configures four pins. Port 2 is shared by SEG48-SEG55, and Port 3 is shared by SEG40-SEG47.
Port 2 Control Register (P2CON) 28H, R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
High nibble port configuration Lower nibble port configuration (P2.4/SEG51-P2.7/SEG48) (P2.0/SEG55-P2.3/SEG52) P2CON pin configuration settings: (bit7, 6, 5, 4 or bit3, 2, 1, 0) x000 x001 x010 x011 x1xx Input mode Input mode, pull-up Output mode, push-pull Output mode, open-drain LCD Segment (SEG55-SEG52 for P2.0-P2.3 or SEG51-SEG48 for P2.4-P2.7)
Figure 11-7. Port 2 Control Register (P2CON)
PORT 3
Port 3 Control Register (P3CON) 2CH, R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
High nibble port configuration Lower nibble port configuration (P3.4/SEG43-P3.7/SEG40) (P3.0/SEG47-P3.3/SEG44) P3CON pin configuration settings: (bit7, 6, 5, 4 or bit3, 2, 1, 0) x000 x001 x010 x011 x1xx Input mode Input mode, pull-up Output mode, push-pull Output mode, open-drain LCD Segment (SEG47-SEG44 for P3.0-P3.3 or SEG43-SEG40 for P3.4-P3.7)
Figure 11-8. Port 3 Control Register (P3CON)
11-5
I/O PORTS
S3CB519
PORT 4 P4CON contains two nibbles and each nibble configures four pins. Port 4 is shared by COM8-COM15, and I/O and COM switching are up to LMOD register.
Port 4 Control Register (P4CON) 30H, R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
High nibble port configuration Lower nibble port configuration (P4.4/COM12-P4.7/COM15) (P4.0/COM8-P4.3/COM11) P4CON pin configuration settings: (bit7, 6, 5, 4 or bit3, 2, 1, 0) xx00 xx01 xx10 xx11 Input mode Input mode, pull-up Output mode, push-pull Output mode, open-drain
NOTE:
P4.0-P4.7 can be converted to COM8-COM15 according to LMOD setting. If only COM0-COM11 are selected as COM, COM12-COM15 are normal ports. If only COM0-COM7 are selected as COM, COM8-COM15 are normal ports.
Figure 11-9. Port 4 Control Register (P4CON)
11-6
S3CB519
I/O PORTS
PORT 5 Port 5 , which has 15 pins, can be controlled by P5CON but cannot be used as normal I/O. Port 5 is shared by SEG pins and makes the key-strobe. (for details, see LCD chapter). When port 1 is selected as the alternative mode (key scan input) and the key strobe function of port 5 is enabled, port 5 data register has the key-strobe value of the time when the key scan interrupt occurs. For example, when P5.3 outputs strobe and any of port 1 are "Low"-state, forcing the key scan interrupt, port 5 data register has the value "3". For P5.9, port 5 data register has "9".
Port 5 Control Register (P5CON) 34H, R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used Key strobe enable bit: 0 1 Disable key strobe Enable key strobe Strobe duration: 0 1 1.5/fw-45 usec 2/fw-64 usec
Key strobe selection bits: 0 0 1 1 0 1 0 1 P5.0-P5.15 as key strobe P5.0-P5.11 as key strobe P5.0-P5.7 as key strobe P5.0-P5.3 as key strobe
Interval between strobes: P5 output mode: 0 Push-pull output 1 Open-drain output 0 0 1 1 0 1 0 1 32/fw-1 msec 64/fw-2 msec 128/fw-4 msec 256/fw-8 msec
NOTE:
fw is watch timer input clock (fw = 32768 Hz)
Figure 11-10. Port 5 Control Register (P5CON)
11-7
I/O PORTS
S3CB519
NOTES
11-8
S3CB519
BASIC TIMER/WATCHDOG TIMER
12
OVERVIEW
* *
BASIC TIMER/WATCHDOG TIMER
WDTCON controls basic timer clock selection and watchdog timer clear bit. Basic timer is used in two different ways: As a clock source to watchdog timer to provide an automatic reset mechanism in the event of a system malfunction (When watchdog function is enabled in ROM code option) To signal the end of the required oscillation stabilization interval after a reset or stop mode release.
The reset value of basic timer clock selection bits is decided by the ROM code option. (see the section on ROM code option for details). After reset, programmer can select the basic timer input clock using WDTCON. Watchdog timer provides an automatic reset mechanism in the event of a system malfunction (When watchdog function is enabled in ROM code option) When watchdog function is enabled by the ROM code option, programmer must set WDTCON.0 periodically within every 2048 x basic timer input clock time to prevent system reset.
Watchdog Timer Control Register (WDTCON) 0DH, R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used
Not used Watchdog timer clear bit: 0 = Not applicable 1 = clear watchdog timer counter
Basic timer counter clock selection bits: 000 = fxx/2 001 = fxx/4 010 = fxx/16 011 = fxx/32 100 = fxx/128 101 = fxx/256 110 = fxx/1024 111 = fxx/2048
Figure 12-1. Watchdog Timer Control Register (WDTCON)
12-1
BASIC TIMER/WATCHDOG TIMER
S3CB519
BLOCK DIAGRAM
Data Bus
RCOD_OPT .14 .13 .12
nRESET
MUX
WDTCON .6 .5 .4 1/2048 1/1024 1/256 1/128 1/32 1/16 1/4 1/2 MUX fb
Reset or Stop Data Bus
Clear 8-bit Basic Counter (Read Only) BT OVF BT INT
(note)
RCOD_OPT .11
3-bit Watchdog Timer Counter clear
OVF
WDTCON .0
Reset
STOP
IDLE
NOTE: CPU start signal (32/fb) (Power down release)
Figure 12-2. Basic Timer & Watchdog Timer Functional Block Diagram
12-2
S3CB519
WATCH TIMER
13
OVERVIEW
WATCH TIMER
Watch timer functions include real-time and watch-time measurements. After the watch timer starts and time elapses, the watch timer interrupt is automatically set to "1", and interrupt requests commence in 3.91 ms, 0.25 s, 0.5 s or 1 second. The watch timer can generate a steady 0.5 kHz, 1 kHz, 2 kHz or 4 kHz signal to the BUZ output when the main system clock frequency is 4.19 MHz. The watch timer supplies the clock frequency for the LCD controller (fLCD) and BLD. Therefore, if the watch timer is disabled, the LCD and BLD controller do not operate. -- Real-time and Watch-time measurements -- Clock source generation for LCD controller -- Buzzer output frequency generator
Table 13-1. Watch Timer Control Register (WTCON): 8-Bit R/W Bit Name WTCON.7 WTCON.6 WTCON .5-.4 0 0 1 1 WTCON .3-.2 0 0 1 1 WTCON.1 0 1 WTCON.0 0 1 Values - - 0 1 0 1 0 1 0 1 Not used Not used 0.5 kHz buzzer (BUZ) signal output 1 kHz buzzer (BUZ) signal output 2 kHz buzzer (BUZ) signal output 4 kHz buzzer (BUZ) signal output Set watch timer interrupt to 1 sec. Set watch timer interrupt to 0.5 sec. Set watch timer interrupt to 0.25 sec. Set watch timer interrupt to 3.91 ms. Selects (fx/128 or fx/64 ) as the watch timer clock Selects the subsystem clock as watch timer clock Stops the watch timer counter; clears the frequency dividing circuits Runs the watch timer counter Function Address 70H
NOTE: Main system clock frequency (fx) is assumed to be 4.19 MHz.
13-1
WATCH TIMER
S3CB519
WATCH TIMER CIRCUIT DIAGRAM
WTCON .4 .5
fw/26 (0.5 kHz) fw/25 (1 kHz) fw/24 (2 kHz) fw/23 (4 kHz) MUX Buzzer Output
fxt Clock Selector fw 32768 Hz Frequency Dividing Circuit
fw/27 fw/213 fw/214 fw/215 (1 HZ) fw/23 fLCD Selector Circuit WTINT
fx/128 fx/64
Enable/Disable LMOD.0 WTCON .1 WTCON .0 WTCON .2 .3
fx = Main system clock (4.19 MHz) fxt = Subsystem clock (32768 Hz) fw = Watch timer clock
Figure 13-1. Watch Timer Circuit Diagram
13-2
S3CB519
16-BIT TIMER (8-BIT TIMER A & B)
14
OVERVIEW
16-BIT TIMER (8-BIT TIMER A & B)
The 16-bit timer is used in one 16-bit timer or two 8-bit timers. When Bit 2 of TBCON is "1" , it operates as one 16-bit timer. When it is "0", it operates as two 8-bit timers. When it operates as one 16-bit timer, the TBCNT's clock source can be selected by setting TBCON.3. If TBCON.3 is "0", the timer A's overflow would be TBCNT's clock source. If it is "1", the timer A's interval out would be TBCNT's clock source. The timer clock source can be selected by the S/W.
Timer A Control Register (TACON) 40H, R/W, Reset: 00H MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used
Not used
Timer A input clock selection bits: 000 = fxx/1024 Timer A counter clear bit: 001 = fxx/256 0 = No effect 010 = fxx/64 1 = Clear the timer A (when write) 011 = fxx/8 1x0 = fxx/1 1x1 = TACLK NOTE:
Timer A operation enable bit: 0 = Stop 1 = Run
8-Bit Timer A is only available when TBCON.2 is setted "0" for 8-Bit operation mode.
Figure 14-1. Timer A Control Register (TACON) INTERVAL TIMER FUNCTION The timer A&B module can generate an interrupt: the Timer A and/or Timer B match interrupt (TAINT, TBINT). In interval timer mode, a match signal is generated when the counter value is identical to the value written to the reference data register, TADATA/TBDATA. The match signal generates Timer A and/or Timer B match interrupt and clears the counter. TB pin can be toggled whenever the timer B match interrupt occurs if I/O port setting is appropriate.
14-1
16-BIT TIMER (8-BIT TIMER A & B)
S3CB519
Timer B Control Register (TBCON) 44H, R/W, Reset: 00H MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used Timer B input clock selection bits: 000 = fxx/1024 001 = fxx/256 010 = fxx/64 011 = fxx/8 1x0 = fxx/4 1x1 = TBCLK (Not used in this device-no input clock)
Timer B operation enable bit: 0 = Stop 1 = Run Timer B counter clear bit: 0 = No effect 1 = Clear the timer B (when write) Timer B mode selection bit: 0 = 8-bit operation mode 1 = 16-bit operation mode
When 16 bit operation Timer B input clock selection bit: 0 = Timer A overflow out 1 = Timer A interval out NOTE: At 16-bit operation mode 16-bit counter clock input is selected by TACON .6, .5, .4
Figure 14-2. Timer B Control Register (TBCON)
14-2
S3CB519
16-BIT TIMER (8-BIT TIMER A & B)
Data Bus 8 TBCON.2 TBCON.0 TACON.0 TACON.6,.5,.4 Timer A Buffer Register 0 fxx/1024 fxx/256 fxx/64 fxx/8 fxx/1 TACLK M U X 0 MUX TBCON.6,.5,.4 8-Bit Comparator fxx/1024 fxx/256 fxx/64 fxx/8 fxx/4 TBCLK M U X 1 0 Timer B Buffer Register MUX TBCNT (8-Bit Up-Counter, Read Olny) Clear MUX 1 0 Interval Output Gen. TBOUT TBINT 1 TBCON.3 TBCON.2 MUX 1 8-Bit Comparator 0 1 TACNT (8-Bit Up-Counter, Read Only) Clear TAINT MUX Timer A Data Register (Read/Write) TACON.1 TBCON.1
MUX
TBCON.2 TBCON.3
TBCON.2
TBCON.0
Timer B Data Register (Read/Write) TBCON.1 8 Data Bus TBCON.2 TBCON.3
Figure 14-3. Timer A, B Function Block Diagram
14-3
16-BIT TIMER (8-BIT TIMER A & B)
S3CB519
NOTES
14-4
S3CB519
8-BIT TIMER (TIMER 0)
15
OVERVIEW
8-BIT TIMER (TIMER 0)
The 8-bit timer 0 is an 8-bit general-purpose timer/counter. Timer 0 has three operating modes, one of which you select using the appropriate T0CON setting: -- Interval timer mode (Toggle output at T0 pin) -- Capture input mode with a rising or falling edge trigger at the T0CAP pin -- PWM mode (T0PWM)
15-1
8-BIT TIMER (TIMER 0)
S3CB519
FUNCTION DESCRIPTION Timer 0 Interrupts The Timer 0 module can generate two interrupts: the Timer 0 overflow interrupt (T0OVF), and the Timer 0 match/ capture interrupt (T0INT). Interval Timer Function The Timer 0 module can generate an interrupt: the Timer 0 match interrupt (T0INT). In interval timer mode, a match signal is generated(,) and T0 is toggled when the counter value is identical to the value written to the T0 reference data register, T0DATA. The match signal generates a Timer 0 match interrupt and clears the counter. If, for example, you write the value 10H to T0DATA and 0AH to T0CON, the counter will increment until it reaches 10H. At this point, the T0 interrupt request is generated and the counter value is reset and counting resumes. Pulse Width Modulation Mode Pulse width modulation (PWM) mode lets you program the width (duration) of the pulse that is output at the T0PWM pin. As in interval timer mode, a match signal is generated when the counter value is identical to the value written to the Timer 0 data register. In PWM mode, however, the match signal does not clear the counter but can generate a match interrupt. The counter runs continuously, overflowing at FFH, and then repeats the incrementing from 00H. Whenever an overflow occurs, an overflow(OVF) interrupt can be generated. Although you can use the match or the overflow interrupt in PWM mode, interrupts are not typically used in PWMtype applications. Instead, the pulse at the T0PWM pin is held to High level as long as the reference data value is less than or equal to ( ) the counter value, and then the pulse is held to Low level for as long as the data value is greater than ( > ) the counter value. One pulse width is equal to tCLK x 256. Capture Mode In capture mode, a signal edge that is detected at the T0CAP pin opens a gate and loads the current counter value into the T0 data register. You can select the rising or falling edges to trigger this operation. Timer 0 also gives you capture input source: the signal edge at the T0CAP pin. You select the capture input by setting the value of the Timer 0 capture input selection bit in the port control register. Both kinds of Timer 0 interrupts can be used in capture mode: the Timer 0 overflow interrupt is generated whenever a counter overflow occurs; the Timer 0 match/capture interrupt is generated whenever the counter value is loaded into the T0 data register. By reading the captured data value in T0DATA and assuming a specific value for the Timer 0 clock frequency, you can calculate the pulse width (duration) of the signal that is being input at the T0CAP pin.
15-2
S3CB519
8-BIT TIMER (TIMER 0)
TIMER 0 CONTROL REGISTER (T0CON) You use the Timer 0 control register, T0CON, to
* * * *
Select the Timer 0 operating mode (interval timer, capture mode, or PWM mode) Select the Timer 0 input clock frequency Clear the Timer 0 counter, T0CNT Enable the Timer 0 overflow interrupt or Timer 0 match/capture interrupt
A reset clears T0CON to '00H'. This sets Timer 0 to normal interval timer mode, selects an input clock frequency of fOSC/1024, and disables all Timer 0 interrupts. You can clear the Timer 0 counter at any time during normal operation by writing a "1" to T0CON.3.
Timer 0 Control Register (T0CON) 50H, R/W, Reset: 00H MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Timer 0 input clock selection bits: 00 = fxx/1024 01 = fxx/256 10 = fxx/64 11 = External clock (T0CK) Timer 0 operating mode selection bits: 00 = Interval mode (T0) 01 = Capture mode (capture on rising edge, counter running, OVF can occur) 10 = Capture mode (capture on falling edge, counter running, OVF can occur) 11 = PWM mode (Match & OVF interrupt can occur)
Not used
Timer 0 match/capture interrupt enable bit: 0 = Disable 1 = Enable Timer 0 overflow interrupt enable bit: 0 = Disable 1 = Enable
Timer 0 counter clear bit: 0 = No 1 = Clear the timer 0 counter (when write)
Figure 15-1. Timer 0 Control Register (T0CON)
15-3
8-BIT TIMER (TIMER 0)
S3CB519
BLOCK DIAGRAM
T0CON.2 T0CON. 7-.6 Data Bus 8 MUX 8-Bit Up Counter R (Read-Only) OVF Clear T0CON.3 T0CON.1 T0CK 8-Bit Comparator Match
M U X
T0OVF
1/1024 fxx DIV 1/256 1/64
T0INT T0OUT T0PWM
T0CAP Timer 0 Buffer Reg T0CON. 5-.4 Counter Clear Signal Match Timer 0 Data Register 8 Data Bus T0CON. 5-.4
Figure 15-2. Timer 0 Functional Block Diagram
15-4
S3CB519
SERIAL I/O INTERFACE
16
OVERVIEW
1. 2. 3. 4. 5.
SERIAL I/O INTERFACE
The SIO module can transmit or receive 8-bit serial data at a frequency determined by its corresponding control register settings. To ensure flexible data transmission rates, you can select an internal or external clock source. PROGRAMMING PROCEDURE To program the SIO modules, follow these basic steps: Configure the I/O pins at port (SO,nSCK, SI) by loading the appropriate value to the P0CONH register, if necessary. Load an 8-bit value to the SIOCON register to properly configure the serial I/O module. In this operation, SIOCON.2 must be set to "1" to enable the data shifter. For interrupt generation, set the serial I/O interrupt enable bit (SIOCON.1) to "1". When you transmit data to the serial buffer, write data to SIODATA and set SIOCON.3 to 1, the shift operation starts. When the shift operation (transmit/receive) is completed, the SIO pending bit is set to "1", and a SIO interrupt request is generated.
16-1
SERIAL I/O INTERFACE
S3CB519
SIO CONTROL REGISTER (SIOCON)
Serial I/O Module Control Registers (SIOCON) 48H, R/W, Reset: 00H MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
SIO shift clock select bit: 0 = Internal clock (P.S clock) 1 = External clock (SCK) Data direction control bit: 0 = MSB-first 1 = LSB-first SIO mode selction bit: 0 = Rececive-only mode 1 = Transmit/receive mode Shift clock edge selction bit: 0 = Tx at falling edges, Rx at rising 1 = Tx at rising edges, Rx at falling
Not used SIO interrupt enable bit: 0 = Disable SIO interrupt 1 = Enable SIO interrupt SIO shift operation enable bit: 0 = Disable shifter and clock 1 = Enable shfter and clock SIO counter clear and shift start bit: 0 = No action 1 = Clear 3-bit counter and start shifting
Figure 16-1. Serial I/O Control Register (SIOCON)
16-2
S3CB519
SERIAL I/O INTERFACE
SIO PRE-SCALER REGISTER (SIOPS) The values stored in the SIO pre-scaler registers, SIOPS, lets you determine the SIO clock rate (baud rate) as follows: Baud rate = Input clock/(Pre-scaler value + 1), or SCLK input clock where the input clock is fxx/4
SIO Pre-scaler Register (SIOPS) 49H,R/W MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Baud rate = (fxx /4)/(SIOPS + 1)
Figure 16-2. SIO Pre-scaler Register (SIOPS)
BLOCK DIAGRAM
CLK
3-Bit Counter Clear SIOCON.3
SIO INT
SIOCON.7 (Shift Clock Source Select)
SIOCON.1 (Interrupt Enable)
SIOCON.4 (Edge Select) SCLK SIOPS fxx/2 8-Bit P.S 1/2 MUX
SIOCON.2 (Shift Enable)
SIOCON.5 (Mode Select) SO SIOCON.6 (LSB/MSB First Mode Select)
CLK 8-Bit SIO Shift Buffer (SIODATA)
Prescaled Value = 1/(SIOPS + 1) 8 SI
Data Bus
Figure 16-3. SIO Functional Block Diagram
16-3
SERIAL I/O INTERFACE
S3CB519
SERIAL I/O TIMING DIAGRAMS
nSCK
SI
DI7
DI6
DI5
DI4
DI3
DI2
DI1
DI0
SO
DO7
DO6
DO5
DO4
DO3
DO2
DO1
DO0
IRQS Set SIOCON.3
Transmit Complete
Figure 16-4. Serial I/O Timing in Transmit/Receive Mode (Tx at falling, SIOCON.4 = 0)
nSCK
SI
DI7
DI6
DI5
DI4
DI3
DI2
DI1
DI0
SO
DO7
DO6
DO5
DO4
DO3
DO2
DO1
DO0
IRQS Set SIOCON.3
Transmit Complete
Figure 16-5. Serial I/O Timing in Transmit/Receive Mode (Tx at rising, SIOCON.4 = 1)
16-4
S3CB519
BATTERY LEVEL DETECTOR
17
OVERVIEW
BATTERY LEVEL DETECTOR
The S3CB519 microcontroller has a built-in BLD (Battery Level Detector) circuit which allows detection of power voltage drop of an external input level or internal VDD. When external input is selected by P0CONL, detection voltage level can be adjusted through the external divided resistors ratio on BLD pin. Internal reference voltage is 1.2 V. After detection, BLD is automatically disabled, and EOBLD bit is set. Because the clock for BLD comes from the watch timer, watch timer must be enabled to use BLD.
BLDCON.3, .2, .1 S3CB519 Internal VDD Criteria Voltage Setting Circuit
P0CONL.7, .6
M U X
VIN
+
External VDD
BLD Result (EOBLD)
VREF BLD Pin VDD
C1 VREF BGR
External resistor for adjusting detected voltage level NOTES: 1. Internal reference voltage (VREF) = 1.2 V 2. C1 = 0.1 F
Figure 17-1. Voltage Level Detection Circuit
17-1
BATTERY LEVEL DETECTOR
S3CB519
Battery Level Detector Control Register (BLDCON) 71H, R/W, Reset: 40H MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used EOBLD (End of BLD)-read only: 0 = On processing 1 = End of BLD BLD result bit-read only: _ 0 = criteria voltage < source voltage (V DD-VSS) 1 = criteria voltage > source voltage (V DD-VSS)
BLD circuit on/off bit-auto clear: 0 = BLD circuit off 1 = BLD circuit on
Select BLD criteria voltage bit: 010 = 2.4 V 011 = 2.7 V 100 = 3.0 V 101 = 3.3 V 110 = 4.0 V 111 = 4.5 V
Figure 17-2. Battery Level Detector Control Register (BLDCON)
17-2
S3CB519
LCD CONTROLLER/DRIVER
18
OVERVIEW
LCD CONTROLLER/DRIVER
This microcontroller can directly drive the (56 segments x 16 commons) LCD panel. Data written to the LCD display RAM can be transferred to the segment signal pins automatically without program control. When a subsystem clock is selected as the LCD clock source, the LCD display is enabled even during Idle modes. LCD RAM ADDRESS AREA LCD RAM can be addressed by 8-bit RAM access instructions. When the bit value of a display segment is "1", the LCD display is turned on; when the bit value is "0", the display is turned off. Display RAM data are sent out through segment pins SEG0-SEG55 using a direct memory access (DMA) method that is synchronized with the fLCD signal. RAM addresses in this location that are not used for the LCD display can be allocated to general-purpose use. LCD RAM (RAM BANK 12)
S E G 0
S E G 1
S E G 54
S E G 55
COM0 COM1 COM2
bit0 bit1 bit2 80H 82H ECH EEH
COM7 COM8 COM9
bit7 bit0 bit1 81H 83H EDH EFH
COM15
bit7
Figure 18-1. LCD Display Data RAM Organization
18-1
LCD CONTROLLER/DRIVER
S3CB519
LCD CONTROL REGISTER (LCON) LCON controls LCD dividing resistor and LCD display.
LCD Control Register (LCON) MSB
.7 .6 .5 .4 .3 .2 .1 .0
LSB
Not used
Not used LCD segment signal control bit: 00 = All LCD COM/SEG is ground and LCD clock off, TR1 off 01 = All LCD dots off, TR1 on 10 = All LCD dots on, TR1 on 11 = Normal LCD display, TR1 on LCD dividing resistors selection bit: 0 = Normal LCD dividing resistors (R = 55 kohm) 1 = Diminish LCD dividing resistors (R = 28 kohm)
Figure 18-2. LCD Control Register (LCON) LCD VOLTAGE DIVIDING RESISTORS
S3CB519 (1/5 Bias)
LCON.1, .2
VDD
S3CB519 (1/4 Bias)
LCON.1, .2
VDD
TR1
TR1
LCNST.0-3
LCNST.0-3
LCNST.7
VLC1 VLC2 VLC3 VLC4 VLC5 VSS R R R R R
LCNST.7
VLC1 VLC2 VLC3 VLC4 VLC5 VSS R R R R R
VSS
VSS
Figure 18-3. Internal Voltage Dividing Resistor Connection
18-2
S3CB519
LCD CONTROLLER/DRIVER
LCD MODE REGISTER (LMOD) LMOD controls LCD bias, duty, and clock.
LCD Mode Register (LMOD) MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used Bias selection bits: 0 = 1/4 bias 1 = 1/5 bias Duty selection bits: 00 = 1/8 duty (COM0-COM7 select) 01 = 1/12 duty (COM0-COM11 select) 1x = 1/16 duty (COM0-COM15 select) LCD Clock (LCDCK) 1/12 duty (COM0-11) fw/2 6 (512 Hz) fw/2 5 fw/2 3 (1024 Hz) (4096 Hz) fw/2 4 (2048 Hz)
Not used
1/8 duty (COM0-7) 00 01 10 11 fw/2 7 (256 Hz) fw/2 6 fw/2 4 (512 Hz) (2048 Hz) fw/2 5 (1024 Hz)
1/16 duty (COM0-15) fw/2 6 (512 Hz) fw/2 5 (1024 Hz) fw/2 4 (2048 Hz) fw/2 3 (4096 Hz)
Watch timer (fw) selection bits: (When main system clock is supplied to the watch timer source.) 0 = fLCD = 4096 Hz when fw = fx/128 (32.768 kHz @ fx = 4.19 MHz) 1 = fLCD = 8192 Hz when fw = fx/64 (65.563 kHz @ fx = 4.19 MHz)
Figure 18-4. LCD Mode Register (LMOD)
18-3
LCD CONTROLLER/DRIVER
S3CB519
LCD CONTRAST CONTROL REGISTER (LCNST) LCNST controls LCD contrast.
LCD Contrast Register (LCNST) MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used Duty selection bits: 0000 = 1/16 step (the dimmest level) 0001 = 2/16 step 0010 = 3/16 step
Contrast enable bits: 0 = Disable contrast 1 = Enable contrast
.....
1110 = 15/16 step 1111 = 16/16 step (the brightest level)
Figure 18-5. LCD Contrast Register (LCNST)
18-4
S3CB519
LCD CONTROLLER/DRIVER
COM0 COM1 COM2 COM3 COM4 COM5 COM6 COM7
0123 FR 1 Frame
15 0 1 2 3
15
VDD VSS
VLC1 VLC2 COM0 VLC3 VLC4 VLC5 VSS VLC1 VLC2 COM1 S E G 0 S E G 1 S E G 2 S E G 3 S E G 4 VLC3 VLC4 VLC5 VSS VLC1 VLC2 COM2 VLC3 VLC4 VLC5 VSS VLC1 VLC2 SEG0 VLC3 VLC4 VLC5 VSS
COM8 COM9 COM10 COM11 COM12 COM13 COM14 COM15
Figure 18-6. LCD Signal Waveforms (1/16 Duty, 1/5 Bias)
18-5
LCD CONTROLLER/DRIVER
S3CB519
0123 FR 1 Frame
15 0 1 2 3
15
VDD VSS
VLC1 VLC2 SEG1 VLC3 VLC4 VLC5 VSS
VLC1 VLC2 VLC3 VLC4 VLC5 SEG0-COM0 0V -VLC5 -VLC4 -VLC3 -VLC2 -VLC1
VLC1 VLC2 VLC3 VLC4 VLC5 SEG1-COM0 0V -VLC5 -VLC4 -VLC3 -VLC2 -VLC1
Figure 18-6. LCD Signal Waveforms (1/16 Duty, 1/5 Bias) (Continued)
18-6
S3CB519
LCD CONTROLLER/DRIVER
COM0 COM1 COM2 COM3 COM4 COM5 COM6 COM7 S E G 0 S E G 1 S E G 2 S E G 3 S E G 4
0123456701234567 FR 1 Frame
VDD VSS
COM0
VLC1 VLC2 VLC3 = VLC4 VLC5 VSS VLC1 VLC2 VLC3 = VLC4 VLC5 VSS
COM1
COM2
VLC1 VLC2 VLC3 = VLC4 VLC5 VSS VLC1 VLC2 VLC3 = VLC4 VLC5 VSS VLC1 VLC2 VLC3 = VLC4 VLC5 0V -VLC5 -VLC3 = -VLC4 -VLC2 -VLC1
SEG0
SEG0-COM0
Figure 18-7. LCD Signal Waveforms (1/8 Duty, 1/4 Bias)
18-7
LCD CONTROLLER/DRIVER
S3CB519
LCD KEY SCAN When P5CON.7 is set, strobe signal is output to P5.0/SEG39-P5.15/SEG24 during normal SEG output, and the strobe signal number is selected by P5CON setting. Key input is acquired from KS0/P1.0-KS3/P1.3 and is set in P1CON. If any pin of P5.0-P5.15 is set only to SEG in P5CON, the selected pin does not output the key strobe signal. If any of P1.0-P1.3 is set to anything other than the alternative mode (key scan mode), the selected pin acts as a normal I/O. When P5.0/SEG39-P5.15/SEG24 are set as key strobe, selected key strobe is output, pin by pin, continuously with a selected interval and duration. When KS0/P1.0-KS3/P1.3 are set as an alternative mode (key scan input), KS0-KS3 state is normally highimpedance, and when SEGx strobe is out, KS0/P1.0-KS3/P1.3 setting is changed to input pull-up state. The data (Port 1) is input right before the strobe disappears, and if any "Low" state appears, an interrupt occurs. When the key scan interrupt occurs, user can read the Interrupt request register for the key input state and the Port 5 data register for the key strobe state. The data of the selected pin, P5, is not changed until next strobe occurs. Port 1 data register has invalid data when in the key input state. Port 5 data register value is `0' for P5.0 strobe, `1' for P5.1, `2' for P5.2, ...'0FH' for P5.15 strobe.
18-8
S3CB519
LCD CONTROLLER/DRIVER
0123 FR 1 Frame Tframe Tinterval Tstrobe
15 0 1 2 3
15
VDD VSS
P5.0
VLC1 VLC2 VLC3 VLC4 VLC5 VSS VLC1 VLC2 VLC3 VLC4 VLC5 VSS
P5.1
P5.15
VLC1 VLC2 VLC3 VLC4 VLC5 VSS NOTES: 1. Tframe When P5.0-P5.3 is used, Tframe is Tinterval x 4, When P5.0-P5.7 is used, Tframe is Tinterval x 8, When P5.0-P5.11 is used, Tframe is Tinterval x 12, When P5.0-P5.15 is used, Tframe is Tinterval x 16. 2. Tinterval, Tstrobe value is set by setting P5CON value.
Figure 18-8. LCD Waveform when Key Strobe Signal is Active
18-9
LCD CONTROLLER/DRIVER
S3CB519
NOTES
18-10
S3CB519
A/D CONVERTER
19
OVERVIEW FEATURES
Sigma Delta ADC.
* * *
A/D CONVERTER
The ADC is Sigma-Delta type ADC for speech and telephony applications. The ADC contains both digital IIR/FIR filters, and an on-chip voltage reference circuit is included to allow supply operations.
256X oversampling On chip decimation filter On chip voltage reference circuitry
19-1
A/D CONVERTER
S3CB519
A/D CONVERTER CONTROL REGISTER (ADCON) User can select the A/D input clock for dividing higher crystal by controlling ADCON. A/D converted data are 14-bit resolution and are input to ADDATAH (High byte), ADDATAL (Low byte) in 16-bit data format. Because A/DC use 256X over-sampling, for 8 kHz sampling, when crystal is 2.048 MHz (= 8 kHz x 256), user must select fx as AD/DA input clock. And when crystal is 4.096 MHz (= 2 x 8 kHz x 256), user must select fx/2 as AD/DA input clock.
A/DC Control Register (ADCON) 4CH, R/W, Reset: 00H MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
A/D enable bits: 0 = A/DC disable 1 = A/DC enable
AD/DA input clock selection bits: 000 = fx 001 = fx/2 AD/DA clock On/Off bits: 010 = fx/3 0 = AD/DA clock Off 011 = fx/4 1 = AD/DA clock On 100 = fx/5 101 = fx/6 110 = fx/8 AD/DA interrupt enable bits: 111 = fx10 0 = Interrupt disable 1 = Interrupt enable
Not used
Figure 19-1. A/DC Control Register (ADCON)
19-2
S3CB519
A/D CONVERTER
ADGAIN ADINN ADINP Modulator + Decimal Filter ADDATAH ADDATAL
AVREFOUT C6
+
Voltage Reference C5
C3 L + C4 L C3
REFH VSS
VDD
AVDD
AVSS
+ C4 L
REFL
AVDD NOTE: C3: C4, C6: C5: L:
AVSS
0.1F TANTALUM CAPACITOR 10 F CERAMIC CAPACITOR 1 F TANTALUM CAPACITOR 0.1mH
Figure 19-2. A/D Converter Block Diagram
19-3
A/D CONVERTER
S3CB519
Differential-ended input application VDD
ADINP C1 R1 R2 + R3 AVREFOUT C1' R1' R2' R4 GND AVREFOUT C2' Example: R1 = R1' = 390 k R2 = R2' = 47 k R3 = 110 k R4 = 220 k R5 = 220 k C1 = C1' = 470 pF C2 = C2' = 22 pF R5 C2
ADINN
-
ADGAIN
Voltage Gain: R5/(R1 + R2) R3 = R4 x R5/(R4 +R5) R1 = R1' R2 = R2' C1 = C1' C2 = C2'
Single-ended input application VDD R2 ADGAIN
ADINN C0 R1 C1 ADINP + R1 -
GND R2 Voltage Gain: 2 x R1 R2 = 2 x R1 R1>50 k C1 = 1 x 10 -5/R2
AVREFOUT Example: R1 = 100 k R2 = 200 k C1 = 50 pF
Figure 19-3. Application Example
19-4
S3CB519
D/A CONVERTER
20
OVERVIEW
D/A CONVERTER
This MCU has an 8-bit Digital-to-Analog converter with R-2R structure. This DAC (Digital - to Analog converter) is used to generate analog voltage, VDA, with 256-steps (28). This function is controlled by the DAC mode register (DACON). To enable the converter, the DACON.0 must be set to "1". To generate an analog voltage (V DA ), load the appropriate value to DADATA. The level of the analog voltage is determined by DADATA. When a user writes data to DADATA, the contents of GR13 is shifted to GR14, GR12 to GR13, GR11 to GR12, and DADATA to GR11. The content of GR24 is output to DAO. When GR24 is output and some time passes, the contents of GR23 is shifted to GR24, GR22 to GR23, GR21 to GR22. After all the contents of GR21-GR24 is out to DAO, GR11-GR14 will be copied to GR21-GR24. Four consequent DA data will be written to DADATA every AD/DA interrupt. Then the four data will be out with same interval until the next AD/DA interrupt occurs. The interval between DAO and the next DAO is about 31 sec when a 4.096 MHz oscillator is used, and ADC clock is fx/2. The interval clock comes from the ADC. (See ADCON).
DADATA (Write) WR Load
DADATA (Read) 8 GR11 GR12 GR13 GR14
VREF
SFT_CK
GR21 GR22 GR23 GR24
8 DAO
8
R2R
NOTE:
When write, data is written to DADATA (write), When read, data is read from DADATA (read).
Figure 20-1. D/A Converter Circuit Diagram
20-1
D/A CONVERTER
S3CB519
DADATA
A
B
C
D
A'
B'
C'
D'
WR
GR11
A
B
C
D
A'
B'
C'
D'
GR12
A
B
C
A'
B'
C'
GR13
A
B
A'
B'
GR14
A
A'
Load_CK
GR21
D
GR22
C
D
GR23
B
C
D
GR24
A
B
C
D
SFT_CK
DAO
A
B
C
D
Figure 20-2. D/A Converter Timing Diagram
20-2
S3CB519
D/A CONVERTER
D/A CONVERTER DATA REGISTER (DADATA) The DADATA specifies the digital data to generate analog voltage. nRESET initializes the DADATA value to "00H". The D/A converter output value, VDAO, is calculated by following formula. 1 V (n = 0-255, DADATA value), where, VPP and VBIAS is specified in electrical 2 PP data and the VPP is a regulated output voltage. VDAO= VPP x (n / 256) + VBIAS- 1 If DADATA value is 0, VDAO = VBIAS - VPP 2 If DADATA value is 128, VDAO = VBIAS 1 If DADATA value is 255, VDAO = VBIAS + VPP 2
D/A CONVERTER CONTROL REGISTER (DACON) DACON values are set to logic "00H" following nRESET, and this value disables DAC.
D/AC Control Register (DACON) 72H, R/W, Reset: 00H MSB .7 .6 .5 .4 .3 .2 .1 .0 LSB
Not used
D/A enable bits: 0 = D/AC disable 1 = D/AC enable
Figure 20-3. D/A Control Register (DACON)
20-3
D/A CONVERTER
S3CB519
NOTES
20-4
S3CB519
MAC816
21
MAC816
MAC816 ARCHITECTURE OVERVIEW
MAC816 is a 16-bit fixed-point DSP coprocessor for low-end DSP applications. It is designed as one of the DSP coprocessor engines for CalmRISC, which targets towards cost-sensitive low-end multimedia DSP applications. The generic coprocessor instructions for CalmRISC are renamed according to the intended operations on MAC816, including the DSP data type, and the DSP addressing mode. Below represented is the top block diagram of MAC816.
YA[13:0] XA[13:0]
XDI[15:0] XDO[15:0] YD[15:0]
XDIE RP0[15:0] RP1[15:0] RP2[15:0] RPD[15:0] MC0[15:0] MC1[15:0] X[15:0] XB[15:0]
XDOE
YDIE
EYB2XB EXB2YB
YB[15:0] Y[15:0]
Multiplier & Adder nXMCS, XMWR, nYMCS, YMWR, SMACYM EC[2:0], nlMASK nRTCS, RTWR, RAT[1:0] CKI, nRES, nlREXE IR[11:0] IR [11:0] Decoder MSR0[15:0] MSR1[15:0] MAH[15:0] MAL[15:0]
Status Adder A[15:0] Control B[15:0]
Figure 21-1. Top Block Diagram
21-1
MAC816
S3CB519
The MAC816 building blocks consist of: -- Multiplier and Accumulator Unit (MAU) -- Arithmetic Unit (AU) -- RAM Pointer Unit (RPU) -- Interface Unit (IU) Basically, MAU (Multiplier and Accumulator Unit) is built around an 8-bit by 16-bit parallel multiplier and a 32-bit adder for multiply-and-accumulate (MAC) operations. Hence, 16-bit by 16-bit MAC operations are performed in two cycles in MAC816. AU performs 16-bit arithmetic and shift operations for DSP. RPU of MAC816 consists of 3 data memory pointers and 2 control blocks for the pointer modulo calculation. The pointers are used for accessing the data memory for a 16-bit data operand. Since two 16-bit data operands can be fetched simultaneously in a single cycle through XD[15:0] and YD[15:0] for MAC operation, the data memory should be partitioned into two parts: X and Y memory. IU is for the communication between CalmRISC and MAC816. It decodes coprocessor interface signals from CalmRISC and controls the data paths in MAC816, according to the decoding result. Most of MAC816 instructions are 1-word instruction, while several instructions which need 16-bit immediate value are 2-word instruction.
21-2
S3CB519
MAC816
PROGRAMMER'S MODEL
In this chapter, the important features of MAC816 are discussed in detail. How the data memory is organized is discussed and the explanation of registers follows. Last, the host interface with CalmRISC will be explained. DATA MEMORY ACCESSES The total data memory address space for MAC816 is 32K-word. The 32K-word data memory space is physically divided into XM (X area memory) and YM (Y area memory). This memory is actually shared with the host processor (CalmRISC). The host processor accesses the 64K-byte data memory in byte width, otherwise MAC816 accesses it in 2-byte width. MAC816 has two types of addressing modes. RPU can generate two 15-bit addresses every instruction cycle which can be post-modified.
YA = 63FH
YMH, DA = C7EH
YML, DA = C7FH
YA = 440H
YMH, DA = 880H XMH, DA = 87EH
YML, DA = 881H XML, DA = 87FH
XA = 0040H XA = 0000H
XMH, DA = 0080H
XML, DA = 0081H
I/O Area XMH, DA = 0000H (128 Byte) XML, DA = 0001H
Figure 21-2. Data Memory Organization
21-3
MAC816
S3CB519
Table 21-1. RPU(RAM Pointer Unit) Registers Registers Mreg1 RPi Mnemonics RP0 RP1 RP2 RPD MCi MC0 MC1 Description RAM Pointer register 0 RAM Pointer register 1 RAM Pointer register 2 RAM Pointer for short direct addressing Modulo Control register 0 for RP0/RP1 Modulo Control register 1 for RP2 Reset Value Unknown Unknown Unknown Unknown Unknown Unknown
XB[15:0] RP0[15:0] RP1[15:0] 16 + 1, 0, - 1, +2/- 2 Modulo Control MC0[15:0] [14:0] XA[14:0] YA[14:0]
[15:0]
IR[5:4] IR[3:0] RPD[15:0] RP2[15:0] 16 [14:0] [15:0] + 1, 0, - 1, +2/- 2 Modulo Control MC1[15:0]
Figure 21-3. RPU (RAM Pointer Unit) Block Diagram
21-4
S3CB519
MAC816
Short Direct Memory Addressing Mode Six-bits embedded in the instruction code as LSBs and 9-bits from the RPD[14:6] of RPD register as MSB compose the 15-bit address to the data memory address. This can be used with some instructions operating an Ai (A/B register in AU) operand. In "load/store mreg1" instruction, a 4-bit embedded in the instruction code as LSBs and 11bits from the RPD[14:4] of RPD register as MSB compose the 15-bit address to the data memory address. This can be used to load/store RAM pointer register from/to data memory. Indirect Memory Addressing Mode The RPi registers of RPU are used as a 15-bit address for indirect addressing XM (X area memory) or YM (Y area memory). Some instructions can simultaneously access the XM and YM, and then RP0 is used for XM and RP2 for YM. In indirect addressing mode, RPi register is modified by +1,-1,-2, and +2 after the addressing. The MSB of RPi register enables modulo opera tion of the RPi modification. The RPU registers are divided into two groups of simultaneous addressing over XA and YA: X-memory is addressed by RP0 and RP1 with MC0 and Y-memory is addressed by RP2 with MC1. RPi from both groups can be used for both XA and YA for instruction, which uses only one address register. In this instruction the XM and YM can be viewed as a single continuous data memory space. Table 21-2. RPi register bit information Bit position [14:0] [15] Value 0H-7FFFH 0 1 Description Data memory(XM/YM) address Modulo mode disable Modulo mode enable
21-5
MAC816
S3CB519
Modulo Control Registers (MCi) MCi controls RP0, RP1 and RP2 register modifications after indirect memory accessing. MCi has an upper boundary value in MCi[9:0], a step size in MCi[12:10] and a modulo size information in MCi[15:13]. The upper boundary determines the upper limit of the modulo body. The modulo size information determines the lower limit and size of the modulo body as shown below. For example, assume RP0 = 87FFH and MC0 = 03FFH: If "@RP0+" is used on the operand of the instruction, the data memory contents pointed by "07FFH" is accessed, and RP0 is updated to "8400H" after memory accessing. Assume RP0 = 07FFH and MC0 = 03FFH: If "@RP0+" is used on the operand of the instruction, the data memory contents pointed by "07FFH" is accessed, and RP0 is updated to "0800H" after memory accessing. Bit position [9:0] [12:10] Value 0H-3FFH 000 001 010-111 [15:13] 000 Upper boundary Step size = + 2 Step size = - 2 Reserved Maximum modulo size = 1024 (0H to 3FFH), Modulo body = RPi[14:10]:0000000000 to RPi[14:10]:MCi[9:0] 001 Maximum modulo size = 8 (0H to 7H), Modulo body = RPi[14:3]:000 to RPi[14:3]:MCi[2:0] 010 Maximum modulo size = 16 (0H to 0FH), Modulo body = RPi[14:4]:0000 to RPi[14:4]:MCi[3:0] 011 Maximum modulo size = 32 (0H to 1FH), Modulo body = RPi[14:5]:00000 to RPi[14:5]:MCi[4:0] 100 Maximum modulo size = 64 (0H to 3FH), Modulo body = RPi[14:6]:000000 to RPi[14:6]:MCi[5:0] 101 Maximum modulo size = 128 (0H to 7FH), Modulo body = RPi[14:7]:0000000 to RPi[14:7]:MCi[6:0] 110 Maximum modulo size = 256 (0H to 0FFH), Modulo body = RPi[14:8]:00000000 to RPi[14:8]:MCi[7:0] 111 Maximum modulo size = 512 (0H to 1FFH), Modulo body = RPi[14:9]:000000000 to RPi[14:9]:MCi[8:0] Description
21-6
S3CB519
MAC816
COMPUTATION UNIT The computation unit contains two main units, the Multiplier and Accumulator Unit (MAU) and Arithmetic Unit (AU).
YB[15:0] 16 Y[15:0] yi[15:0]
XB[15:0] 16
X[15:0] xi[15:0]
8 8 x 16 Multiplier Shift Left
32-Bit Adder OPM Saturation MA[31:0]
32 16
16-Bit Adder OP Saturation A[15:0] B[15:0]
Figure 21-4. Computation Unit Block Diagram
21-7
MAC816
S3CB519
Multiplier and Accumulator Unit (MAU) The MAU consists of a 8 by 16 to 24 bit parallel multiplier, two 16-bit input registers(X and Y), a product output shifter, and 32-bit product and accumulator register(MA). The multiplier performs signed by signed, signed by unsigned, unsigned by signed, or unsigned by unsigned multiplication. By clearing "MSR1[2] (or M816)", the MAU can perform 16 by 16 to 32 bit parallel multiplication in 2 cycles. After the multiplier instruction, if a read instruction of MA is followed, previous MA register value will be read out because. During 16 by 16 multiplication, in the second cycle of multiplication, the instruction of MA modification can cause illegal multiplication results. Thus, multiplier instruction should not be followed by MA register writing. The "MV" flag is set if arithmetic overflow occurs after an arithmetic operation in the MA register, and if set "OPM", the MA register is saturated to a 32-bit positive (7FFFFFFFH) or negative (80000000H). The MA register is not updated by loading X and Y registers. Hence, the X and Y registers can be used as a temporary data registers. The registers in MAU are as shown in the table. Mnemonics X Y MAL MAH or MA Arithmetic Unit (AU) The AU consists of 16-bit adder, 1-bit shifter, and two result registers (A and B). The AU receives one operand from Ai and another operand from XB or Ai. Operations between the two Ai registers are also possible. The source and destination Ai register of an AU instruction are always the same. The XB bus is used for transferring one of the register content, an immediate operand, or the content of a data memory location as a source operand. The AU results are stored in one of the Ai registers. The AU can perform add, subtract, compare, and shift operations. It uses two's complement arithmetic operations. The AU evaluates the status flags of an arithmetic result. The "V" flag is set if arithmetic overflow occurs after an arithmetic operation in A or B register, and if set to "OPA" or "OPB", the A or B register is saturated to a 16-bit positive (7FFFH) or negative (8000H). Data transfer between MAC816 and the host processor can be achieved via A or B register. The host processor (CalmRISC) can directly access A and B registers of MAC816 through "CLD GPR,imm" or "CLD imm,GPR" instruction. Description MAU X input register MAU Y input register MAU Accumulator register, MA[15:0] MAU Accumulator register, MA[31:16] Reset Value Unknown Unknown Unknown Unknown
21-8
S3CB519
MAC816
STATUS REGISTERS Status Register 0 : MSR0 MSR0 is mainly reserved for flagging an AU result , for protecting control overflow, and for indicating test results. Bit Name C V Z N T OPA OPB - Bit 0 1 2 3 4 5 6 15-7 Carry flag Overflow flag Zero flag Negative flag Test result flag Overflow Protection control for A register Overflow Protection control for B register Reserved Description
MSR0[0] (or C) is the carry of AU executions. MSR0[1] (or V) is the overflow flag of AU executions. It is set to 1 if and only if the carry-in into the 16-th bit position of addition/subtraction differs from the carry-out from the 16-th bit position. MSR0[2] (or Z) is the zero flag, which is set to 1 if and only if the AU result is zero. MSR0[3] (or N) is the negative flag. Basically, the most significant bit (MSB) of AU results becomes the N flag. However, if an AU instruction touches the overflow flag (V) like ADD, SUB, CP, etc, N flag is updated as exclusive-OR of V and the MSB of the AU result. This implies that even if an AU operation results in overflow, N flag is still valid. T flag is set to 1 if the result of "ETST cond." Instruction is true. MSR0[5] (or OPA) or MSR0[6] (or OPB) enables arithmetic saturation when an arithmetic overflow occurs in A or B register. Status Register 1 : MSR1 MSR1 consists of status flags of MAU operation, control bit for MAU, and selection bits of EC[I]. Bit Name PSH1 OPM M816 MV SEC0 SEC1 SEC2 Bit 0 1 2 3 7-4 11-8 15-12 Description Multiplier product 1 bit shift control Overflow Protection control for MA register Multiplication mode control MA overflow flag EC[0] selection EC[1] selection EC[2] selection
21-9
MAC816
S3CB519
MSR1[0] (or PSH1) enables the product to shift by one bit to the left. MSR1[1] (or OPM) controls MA saturation. MSR1[2] (or M816) selects the operating mode for the multiplier. If M816=1, then the multiplier performs 8 by 16 bit to 24 bit multiplication. Otherwise (M816=0), the multiplier performs 16 by 16 bit to 32 bit multiplication in two cycles. MSR1[3] (or MV) is the overflow flag of MAU executions. It is set to 1 if an arithmetic overflow (32-bit overflow) occurs after an arithmetic operation in MAU. It is cleared by a processor reset or "ECR MV" and modified by writing to MSR1. SECi selects the combination of EC[I]. The flag information for the host processor is selected by setting SECi. Value( of SECi) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101-1111 Description EC[I] = Z, Set to 1 if Z flag is 1. EC[I] = not Z EC[I] = N EC[I] = not N EC[I] = C EC[I] = not C EC[I] = V EC[I] = not V EC[I] = T EC[I] = GT EC[I] = LE EC[I] = MV EC[I] = not MV reserved
21-10
S3CB519
MAC816
HOST INTERFACE MAC816 is interfaced to the host processor according to CalmRISC coprocessor interface scheme explained below. CalmRISC supports an efficient and seamless interface with coprocessors. By integrating a MAC (multiply and accumulate) with the CalmRISC core, not only microcontroller functions but also complex digital signal processing algorithms can be implemented in a single development platform (or MDS). CalmRISC has a set of dedicated signal pins, through which data/command/status are exchanged between CalmRISC and a coprocessor. Depicted below are the coprocessor signal pins and a figure of how two processors are interfaced.
Program ROM
Data RAM
Data Bus [7:0]
SYSCP [11:0]
nCOPID
CalmRISC
nCLDID
Coprocessor
CLDWR
EC[2:0]
Figure 21-5. Coprocessor Interface Diagram
21-11
MAC816
S3CB519
As shown in the coprocessor interface diagram above, the coprocessor interface signals of CalmRISC are: SYSCP[11:0], nCOPID, nCLDID, nCLDWR, and EC[2:0]. The data are exchanged through the data buses, DI[7:0] and DO[7:0]. CalmRISC issues the command to a coprocessor through SYSCP[11:0] in COP instructions. The status of a coprocessor can be sent back to CalmRISC through EC[2:0], and these flags can be checked in the condition codes of branch instructions. The coprocessor instructions are listed in the following table. Table 21-3. Coprocessor instructions Mnemonic COP CLD CLD JP(or JR) CALL LNK The coprocessor of CalmRISC does not have its own program memory (that is, passive coprocessor) as shown in Figure 7 -1. In fact, the coprocessor instructions are fetched and decoded by CalmRISC, which issues the command to the coprocessor through the interface signals. For example, if "COP #imm:12" instruction is fetched, then the 12bit immediate value (imm:12) is loaded on SYSCP[11:0] signal with nCOPID active in ID/MEM stage, to request the coprocessor to perform the designated operation. The interpretation of the 12-bit immediate value is totally up to the coprocessor. The instruction set of the coprocessor is determined by arranging the 12 bit immediate field. In other words, CalmRISC only provides a set of generic coprocessor instructions, and its installation to a specific coprocessor instruction set can differ from one coprocessor to another. CLD Write instructions ("CLD imm:8, GPR") put the content of a GPR register of CalmRISC on the data bus (DO[7:0] ) and issue the address(imm:8) of the coprocessor internal register on SYSCP[7:0] with nCLDID active and CLDWR active. CLD Read instructions ("CLD GPR, imm:8" in Table 1) work similarly, except that the content of the coprocessor internal register addressed by the 8-bit immediate value is read into a GPR register through DI[7:0] with nCLDID active and CLDWR inactive. The timing diagram given below is a coprocessor instruction pipeline and shows the time the coprocessor performs the required operations. Suppose I2 is a coprocessor instruction. First, it is fetched and decoded by CalmRISC (at t = T(i-1)). Once it is identified as a coprocessor instruction, CalmRISC indicates to the coprocessor the appropriate command through the coprocessor interface signals (at t = T(i)). Then the coprocessor performs the designated tasks at t = T(i) and t = T(i+1). Hence IF from CalmRISC and then ID/MEM and EX from the coprocessor constitute the pipeline for I2. Similarly, if I3 is a coprocessor instruction, the coprocessor's ID/MEM and EX stages replace the corresponding stages of CalmRISC. Op 1 #imm:12 GPR imm:8 EC2-0 Op 2 - imm:8 GPR label Coprocessor operation Data transfer from coprocessor into GPR Data transfer of GPR to coprocessor Conditional branch with coprocessor status flags Description
21-12
S3CB519
MAC816
CalmRISC
T (i -1)
T (i)
T (i +1)
I1: Normal Instruction I2: Coprocessor Instruction I3: Coprocessor Instruction
IF
ID/MEM IF
EX ID/MEM IF EX ID/MEM EX
Coprocessor Interface Signals
For I2
For I3
Coprocessor
I2: I3: ID/MEM EX ID/MEM EX
Figure 21-6. Coprocessor Instruction Pipeline In a multi-processor system, the data transfer between processors is an important factor to determine the efficiency of the overall system. Suppose an input data stream is accepted by a processor, in order to share data with other processors, there should be some efficient mechanism to transfer the data to the processors. In CalmRISC, data is transferred through a single shared data memory. The shared data memory in a multi-processor has some inherent problems such as data hazards and deadlocks. However, the coprocessor in CalmRISC accesses the shared data memory only at the time designated by CalmRISC, a time at which CalmRISC is guaranteed not to access the data memory, and therefore there is no contention over the shared data memory. Another advantage of the proposed scheme is that the coprocessor can access the data memory in its own bandwidth.
21-13
MAC816
S3CB519
INSTRUCTION SET
GLOSSARY This chapter describes the MAC816 instruction set, and the details of each instruction are listed in alphabetical order . The following notations are used for the description and mnemonics of assembler. Table 21-4. Notation and Convention Notation adr:N #imm:N & | ~ ^ N**M (N)M Interpretation Operand N. N can be omitted if there is only one operand. Typically, is the destination (and source) operand and is the source operand. Content of memory location specified by N-bit address N-bit immediate number Bit-wise AND Bit-wise OR Bit-wise NOT Bit-wise XOR Mth power of N M-based number N
21-14
S3CB519
MAC816
Table 21-5. MAC816 Registers Notation Mreg Operand Code 0000-0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Ai 0 1 Am 00 01 10 11 MAm 00 01 10 11 Mnemonic - MARN Y X MAL MAH RP0 RP1 RP2 RPD MC0 MC1 MSR0 MSR1 A B A B AC BC A B MAL MAH Reserved MA[31:16] + MA[15], MA higher word with round-off Y[15:0], multiplier Y input register X[15:0], multiplier X input register MA[15:0], multiplier accumulator lower 16-bits MA[31:16], multiplier accumulator higher 16-bits RP0[15:0], RAM pointer register 0 RP0[15:0], RAM pointer register 1 RP0[15:0], RAM pointer register 2 RAM pointer for short direct addressing Modulo control register 0 for RP0/RP1 Modulo control register 1 for RP2 MAC816 status register 0 MAC816 status register 1 A[15:0], AU result register A B[15:0], AU result register B A[15:0], AU result register A B[15:0], AU result register B A[15:0], AU result register A with Carry B[15:0], AU result register B with Carry A[15:0], AU result register A B[15:0], AU result register B MA[15:0], multiplier accumulator lower 16-bits MA[31:16], multiplier accumulator higher 16-bits Descriptions
21-15
MAC816
S3CB519
Table 21-5. MAC816 Registers (Continued) Notation Mreg2 Mreg2s Mreg2d Operand Code 000-011 100 101 110 111 Mreg1 00 01 10 11 Mreg3 00 01 10 11 Mnemonic - Y X MAL MAH RP0 RP1 RP2 RPD MC0 MC1 MSR0 MSR1 Reserved Y[15:0], multiplier Y input register X[15:0], multiplier X input register MA[15:0], multiplier accumulator lower 16-bits MA[31:16], multiplier accumulator higher 16-bits RP0[15:0], RAM pointer register 0 RP0[15:0], RAM pointer register 1 RP0[15:0], RAM pointer register 2 RAM pointer for short direct addressing Modulo control register 0 for RP0/RP1 Modulo control register 1 for RP2 MAC816 status register 0 MAC816 status register 1 Descriptions
Table 21-6. Data Transfer Registers Notation Creg Register Address 00 01 10 11 Descriptions A[7:0], AU result register A lower 8-bits A[15:8], AU result register A higher 8-bits B[7:0], AU result register B lower 8-bits B[15:8], AU result register B higher 8-bits
21-16
S3CB519
MAC816
Table 21-7. Memory Access Mode Information Notation @rpm Operand Code 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100-1111 @rp0m 00 01 10 11 @rp2m 00 01 10 11 Mnemonic @rp0+ @rp0@rp0s @rp0 @rp1+ @rp1@rp1s @rp1 @rp2+ @rp2@rp2s @rp2 @rp0+ @rp0@rp0s @rp0 @rp2+ @rp2@rp2s @rp2 Descriptions Content of memory location specified by RP0, RP0 post-increment by 1 with modulo mode Content of memory location specified by RP0, RP0 post-decrement by 1 with modulo mode Content of memory location specified by RP0, RP0 post-modification by +2 or -2 with modulo mode Content of memory location specified by RP0 Content of memory location specified by RP1, RP1 post-increment by 1 with modulo mode Content of memory location specified by RP1, RP1 post-decrement by 1 with modulo mode Content of memory location specified by RP1, RP1 post-modification by +2 or -2 with modulo mode Content of memory location specified by RP1 Content of memory location specified by RP2, RP2 post-increment by 1 with modulo mode Content of memory location specified by RP2, RP2 post-decrement by 1 with modulo mode Content of memory location specified by RP2, RP2 post-modification by +2 or -2 with modulo mode Content of memory location specified by RP2 Reserved Content of memory location specified by RP0, RP0 post-increment by 1 with modulo mode Content of memory location specified by RP0, RP0 post-decrement by 1 with modulo mode Content of memory location specified by RP0, RP0 post-modification by +2 or -2 with modulo mode Content of memory location specified by RP0 Content of memory location specified by RP2, RP2 post-increment by 1 with modulo mode Content of memory location specified by RP2, RP2 post-decrement by 1 with modulo mode Content of memory location specified by RP2, RP2 post-modification by +2 or -2 with modulo mode Content of memory location specified by RP2
21-17
MAC816
S3CB519
Table 21-8. Condition Code Information Notation cc Operand Code 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101-1111 Mnemonic Z NZ C NC NEG POS V1 V0 - GT LE MV1 MV0 - Z=1 Z=0 C=1 C=0 N=1 N=0 V=1 V=0 Reserved N = 0 and Z = 0 N = 1 and Z = 1 MV = 1 MV = 0 Reserved Descriptions
Table 21-9. Control Bit Code Information Notation bs Operand Code 000 001 010 011 100 101 110 111 Mnemonic OPM PSH1 ME0 ME1 M816 ME2 OPA OPB MSR1[1] MSR1[0] RP0[15], RP0 modulo mode enable RP1[15], RP1 modulo mode enable MSR1[2] RP2[15], RP2 modulo mode enable MSR0[5] MSR0[6] Descriptions
21-18
S3CB519
MAC816
Table 21-10. AU operation code information Notation EMOD0 Operand Code 00 01 10 11 EMOD1 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010-1111 Mnemonic ELD/ELDT EADD/EADDT ESUB/ESUBT ECP/ECPT ERR/ERRT ERL/ERLT ESR/ESRT ESL/ESLT EINC/EINCT EDEC/EDECT ENEG/ENEGT ECR/ECRT ENORM/ENORMT EABS/EABST - Load Addition Subtraction Comparison Rotate right Rotate left Arithmetic shift right Arithmetic shift left Increment Decrement Negation Clear Normalization Absolution reserved Descriptions
Table 21-11. Others Notation sXsY Operand Code 00 01 10 11 rs 0 1 ts 0 Mnemonic uu us su none ER ES ELD/ EMOD1/ EMOD0 ELDT/ EMOD1T/ EMOD0T Descriptions Unsigned by unsigned multiplication Unsigned by signed multiplication Signed by unsigned multiplication Signed by signed multiplication Reset Set Execute mnemonic always
1
Execute mnemonic when test result flag (MSR0[4] or T) is set. If T = 0, act as nop.
21-19
MAC816
S3CB519
INSTRUCTION ENCODING Table 21-12. Instruction Encoding Instruction ELD Mreg2,@rpm ELD @rpm,Mreg2 ELD Mreg3,@rpm ELD @rpm,Mreg3 ELD Mreg1,adr:4 ELD adr:4,Mreg1 ESEC0 #imm:4 ESEC0 #imm:4 ESEC0 #imm:4 ECR MV ELD Mreg2d,Mreg2s EMOD0 A,#imm:5 ELD adr:6,MAm ELD MAm,adr:6 EADD Am,adr:6 ESUB Am,adr:6 ECP Am,adr:6 ELD Mreg,Am ELD Am,Mreg ELD/ELDT @rpm,Am EMOD1/EMOD1T Am EMOD0/EMOD0T Am,MAm EMOD0/EMOD0T Am,@rpm 1 01 1 0 1 EMOD0 10 01 11 00 01 10 11 00 00 01 ts rpm EMOD1 MAm EMOD0 rpm Mreg 1 01 EMOD0 MAm MAm Am 10 01 11 00 10 9 00 8 7 0 1 00 01 10 11 00 Mreg1 Mreg1 00 01 10 11 Mreg2d Mreg2s Imm[4:0] adr[3:0] Imm[3:0] adr[3:0] Mreg3 6 5 Mreg2 4 3 2 rpm 1 0 2nd Word -
adr[5:4]
21-20
S3CB519
MAC816
Table 21-12. Instruction Encoding (Continued) Instruction ELD Mreg,#imm:16 EMOD0 Am,#imm:16 EMAD @rp0m,@rp2m,sXsY EMSB @rp0m,@rp2m,sXsY EMUL @rp0m,@rp2m,sXsY EMUL Ai,@rp2m,sXsY EMUL X,@rp2m,sXsY EMUL @rp0mY,,sXsY EMAD Ai,@rp2m,sXsY EMAD X,@rp2m,sXsY EMAD @rp0m,Y,sXsY EMSB Ai,@rp2m,sXsY EMSB X,@rp2m,sXsY EMSB @rp0m,Y,sXsY EMAD X,Y,sXsY EMSB X,Y,sXsY EMUL X,Y,sXsY ESR MA ESL MA ERND MA ENOP ERPM rpm ER/ES bs ETST cc ELD RPDN,#imm:4
NOTE: "X" means not applicable.
11 11
10
9 00 01 10
8
7
6
5
4
3
2
1
0
2nd Word Imm[11:0]
Mreg EMOD0 00 01 10 11 0 10 11 Ai Am rp0m
Imm[15:12]
rp2m
sXsY
-
rp0m Ai rp2m
11
00
0 10 11
rp0m Ai rp2m
01
0 10 11
rp0m 00 01 10
10
00
01
00 01 10
xx
1 00 11 01 10 11 rs
xxxxx rpm bs cc Imm[3:0]
21-21
MAC816
S3CB519
QUICK REFERENCE Table 21-13. Quick Reference Operation ELD EADD ESUB ECP ELD ELD ELD EADD ESUB ECP ELD ELD ELD ELD ELD ELD ELD ELD EADD ESUB ECP ELDT EADDT ESUBT ECPT ELD ELDT ELD EADD ESUB ECP ELDT EADDT ESUBT ECPT Am @rpm Operand1 A Operand2 #imm:5 op1 op2 op1 op1 + op2 op1 op1 - op2 op1 - op2 RPD[7:4] op2 op1 op2 op1 op2 op1 op1 + op2 op1 op1 - op2 op1 - op2 op1 op2 op1 op2 op1 op2 op1 op2 op1 op2 op1 op2 op1 op2 op1 op2 op1 op1 + op2 op1 op1 - op2 op1 - op2 If T=1, same as ELD If T=1, same as EADD If T=1, same as ESUB If T=1, same as ECP op1 op2 If T=1, same as ELD op1 op2 op1 op1 + op2 op1 op1 - op2 op1 - op2 If T=1, same as ELD If T=1, same as EADD If T=1, same as ESUB If T=1, same as ECP - c.z,v,n c,z,v,n c,z,v,n - c.z,v,n c,z,v,n c,z,v,n c.z,v,n c,z,v,n c,z,v,n - - - - - - - - c.z,v,n c,z,v,n c,z,v,n - c.z,v,n c,z,v,n c,z,v,n - Function Flag - c.z,v,n c,z,v,n c,z,v,n
RPDN Adr:6 Am/MAm Am
#imm:4 Am/MAm Adr:6 Adr:6
Mreg1 Adr:4 Am mreg Mreg2d Mreg2 @rpm Am
Adr:4 Mreg1 Mreg Am Mreg2s @rpm Mreg2 MAm
@rpm
Am
21-22
S3CB519
MAC816
Table 21-13. Quick Reference (Continued) Operation ETST ELD ELD EADD ESUB ECP ERPM ER ES ESEC0 ESEC1 ESEC2 ERR ERRT ERL ERLT ESR ESRT ESL ESLT EINC EINCT EDEC EDECT ENEG ENEGT EABS EABST ENORM Am - Am - Am - Am - Am - Am - Am - Am - Operand1 cc mreg A Operand2 - #imm:16 #imm:16 op1 op2 op1 op2 op1 op1 + op2 op1 op1 - op2 op1 - op2 RP modified RP op1 0 op1 10 MSR1[7:4] imm[3:0] MSR1[11:8] imm[3:0] MSR1[15:12] imm[3:0] when Am!=AC/BC, op {op1}>>1, op1[15] op1[0], c op1[0] when Am=AC/BC, op1 {c:op1}>>1, c op1[0] when t=1, same as ERR when Am!=AC/BC, op{op1}<<1, op1[0]op[15], cop[15], when Am=AC/BC, op1{op1:c}<<1, cop[15] when t=1, same as ERL when Am!=AC/BC, op {op1}>>1, c op1[0] when Am=AC/BC, op1 {c:op1}>>1, c op1[0] when t=1, same as ESR when Am!=AC/BC, op1 {op1}<<1, op1[0] 0, c op[15], when Am=AC/BC, op1 {op1:c}<<1, c op[15] when t=1, same as ESL when Am!=AC/BC, op1 op1+1 when Am=AC/BC, op1 op1+c when t=1, same as EINC when Am!=AC/BC, op1 op1+ffffh when Am=AC/BC, op1 op1+ffffh+c when t=1, same as EDEC when Am!=AC/BC, op1 ~op1+1 when Am=AC/BC, op1 ~op1+c when t=1, same as ENEG when Am!=AC/BC, if op[15]=1, op1 ~op1+1 when Am=AC/BC, op[15]=1, op1 ~op1+c when t=1, same as EABS when Am!=AC/BC, if op1[15]^op1[14]=0, op1 {op1}<<1, op1[0] 0, RP0 RP0+1 when Am=AC/BC, if op1[15]^op1[14]=0, op1 {op1:c}<<1, RP0 RP0+1 when t=1, same as ENORMT op1 0 when t=1, same as ECR Function MSR0[4] cc (condition check) Flag - - - c.z,v,n c,z,v,n c,z,v,n - - - -
rpm bs bs MSR1
- - - #imm:4
Am
-
c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n c,z,v,n
ENORMT ECR ECRT Am -
c,z,v,n -
21-23
MAC816
S3CB519
Table 21-13. Quick Reference (Concluded) Operation ESR ESL ERND EMAD Operand1 MA MA MA MA Operand2 - - - @rp0m Operand3 - - - @rp2m op1 op1>>1 op1 op1<<1 MA[31:16] MA[31:16] + MA[15] X-reg @rp0m, Y-reg @rp2m, MA MA+X*Y EMSB MA @rp0m @rp2m X-reg @rp0m, Y-reg @rp2m, MA MA-X*Y EMUL MA @rp0m @rp2m X-reg @rp0m, Y-reg @rp2m, MA (X*Y) EMAD MA Ai @rp2m X-reg op2, Y-reg @rp2m, MA MA+X*Y EMSB MA Ai @rp2m X-reg op2, Y-reg @rp2m, MA MA-X*Y EMUL MA Ai @rp2m X-reg op2, Y-reg @rp2m, MA (X*Y) EMAD MA X @rp2m Y-reg @rp2m, MA MA+X*Y EMSB MA X @rp2m Y-reg @rp2m, MA MA-X*Y EMUL MA X @rp2m Y-reg @rp2m, MA (X*Y) EMAD MA @rp0m Y X-reg @rp0m, MA MA+X*Y EMSB MA @rp0m Y X-reg @rp0m, MA MA-X*Y EMUL MA @rp0m Y X-reg @rp0m, MA (X*Y) EMAD EMSB EMUL MA MA MA X X X Y Y Y MA MA+X*Y MA MA-X*Y MA (X*Y) MV MV - - MV MV - MV MV - MV MV - MV Function Flag - MV MV MV
21-24
S3CB519
MAC816
MAC816 INSTRUCTION DESCRIPTION
EABS
Format:
-- Absolute
EABS : Am If the MSB of is 1, ~ +1 when is A or B. If the MSB of is 1, ~ +C when is AC or BC. EABS adds the values 0 and the 2's complement of . C: Z: V: N: set if the borrow of result is zero. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. exclusive OR of V and MSB of result.
Operation:
Flags:
21-25
MAC816
S3CB519
EABST --
Format:
Absolute conditional
EABST : Am If T=1, then same as EABS, else no operation If T=1, then same as EABS, else no operation
Operation: Flags:
21-26
S3CB519
MAC816
EADD --
Format:
Add
EADD , : Am: A, B, AC, BC : adr:6, @rpm, Ai, Mreg, #imm:16, #imm:5 when is A or B. + C when is AC or BC. EADD adds the values in and and stores the result in . C: Z: V: N: set if the carry of result is 1. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. exclusive OR of V and MSB of result.
Operation:
Flags:
NOTE:
If is B, can not be #imm:5.
21-27
MAC816
S3CB519
EADDT -- Add conditional
Format: EADDT , : Am: A, B, AC, BC : @rpm, Ai, MAH,MAL If T=1, then same as EADD, else no operation If T=1, then same as EADD, else no operation
Operation: Flags:
21-28
S3CB519
MAC816
ECP --
Format:
Compare
ECP , : Am : adr:6, @rpm, Ai, Mreg, #imm:16, #imm:5 + ~ +1 when is A or B. + ~ +C when is AC or BC. ECP compares the values of and by subtracting from . Contents of and are not changed. C: Z: V: N: set if the borrow of result is zero. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. exclusive OR of V and MSB of result.
Operation:
Flags:
NOTE:
If is B, can not be #imm:5.
21-29
MAC816
S3CB519
ECPT --
Format:
Compare conditional
ECPT , : Am: A, B, AC, BC : @rpm, Ai, MAH,MAL If T=1, then same as ECP, else no operation If T=1, then same as ECP, else no operation
Operation: Flags:
21-30
S3CB519
MAC816
ECR
Format:
-- Clear
ECRT : Ai, MV 0 ECRT clears Ai or MV.
Operation:
21-31
MAC816
S3CB519
ECRT
Format:
-- Clear
ECRT : Ai If T=1, 0 ECRT clears Ai when T=1.
Operation:
21-32
S3CB519
MAC816
EDEC
Format:
-- Decrement
EDEC : Am + 0xffff when is A or B. + 0xffff + C when is AC or BC. EDEC decrements the value in . C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. exclusive OR of V and MSB of result.
Operation:
Flags:
21-33
MAC816
S3CB519
EDECT
Format:
-- Decrement conditional
EDECT : Am If T=1, then same as EDEC, else no operation If T=1, then same as EDEC, else no operation
Operation: Flags:
21-34
S3CB519
MAC816
EINC --
Format:
Increment
EINC : Am + 1 when is A or B. + C when is AC or BC. EINC increments the value in . C: Z: V: N: set if carry is generated. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. exclusive OR of V and MSB of result.
Operation:
Flags:
21-35
MAC816
S3CB519
EINCT --
Format:
Increment conditional
EINCT : Am If T=1, then same as EINC, else no operation If T=1, then same as EINC, else no operation
Operation: Flags:
21-36
S3CB519
MAC816
ELD Adr --
Format:
Load Adr
ELD , ,: adr:6, MAi / adr:4,Mreg1 ELD Adr loads a value specified by into the memory location determined by
Operation:
21-37
MAC816
S3CB519
ELD Ai --
Format:
Load Ai
ELD , : Ai: A, B : adr:6, @rpm, Ai, Mreg, #imm:5, #imm:16 Ai ELD Ai loads a value specified by into the register designated by Ai.
If is B, can not be #imm:5.
Operation:
NOTE:
21-38
S3CB519
MAC816
ELD Mreg --
Format:
Load Mreg
ELD , : Mreg : Ai Mreg Ai ELD Mreg loads a value specified by into the register designated by Mreg.
Operation:
21-39
MAC816
S3CB519
ELD Mreg1 --
Format:
Load Mreg1
ELD , : Mreg1: RP0, RP1, RP2, RPD : adr:4 Mreg1 adr:4 ELD Mreg1 loads the content of memory location determined by adr:4 into the register designated by Mreg1.
Operation:
21-40
S3CB519
MAC816
ELD Mreg2 --
Format:
Load Mreg2
ELD , : Mreg2: X, Y, MAH, MAL : @rpm Mreg2 @rpm, rpi post-modified rpi ELD Mreg2 loads the content of memory location determined by @rpm into the register designated by Mreg2.
Operation:
21-41
MAC816
S3CB519
ELD Mreg3 --
Format:
Load Mreg3
ELD , : Mreg3: MC0, MC1, MSR0, MSR1 : @rpm Mreg3 @rpm ELD Mreg3 loads the content of memory location determined by @rpm into the register designated by Mreg3.
Operation:
21-42
S3CB519
MAC816
ELD @rpm --
Format:
Load into memory indexed
ELD , : @rpm : Ai, Mreg2, Mreg3 @rpm , rpi post-modified rpi ELD @rpm loads the value of into the memory location determined by @rpm.
Operation:
21-43
MAC816
S3CB519
EMAD --
Format:
Multiplication and Addition
EMAD , ,sXsY ,: @rp0m,@rp2m / Ai,@rp2m / X,@rp2m / @rp0m,Y / X,Y X , Y , MA MA + {sign,X}*{sign,Y} EMAD multiplies the values in and and adds the result in MA. MV: Set if the arithmetic overflow occurs in MA after this instruction.
Operation:
Flags:
21-44
S3CB519
MAC816
EMSB
Format:
-- Multiplication and Subtraction
EMSB , ,sXsY ,: @rp0m,@rp2m / Ai,@rp2m / X,@rp2m / @rp0m,Y / X,Y X , Y , MA MA - {sign,X}*{sign,Y} EMAD multiplies the values in and together and subtracts the result in MA. MV: Set if the arithmetic overflow occurs in MA after this instruction.
Operation:
Flags:
21-45
MAC816
S3CB519
EMUL
Format:
-- Multiply
EMUL , ,sXsY ,: @rp0m,@rp2m / Ai,@rp2m / X,@rp2m / @rp0m,Y / X,Y X , Y , MA {sign,X}*{sign,Y} EMUL multiplies the values in and and stores the result in MA.
Operation:
21-46
S3CB519
MAC816
ENEG
Format:
-- Negate
ENEG : Am ~ +1 when is A or B. ~ +C when is AC or BC. ESUB adds the values 0 and the 2's complement of to to negate . C: Z: V: N: set if the borrow of result is zero. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. exclusive OR of V and MSB of result.
Operation:
Flags:
21-47
MAC816
S3CB519
ENEGT
Format:
-- Negate conditional
ENEGT : Am If T=1, then same as ENEG, else no operation If T=1, then same as ENEG, else no operation
Operation: Flags:
21-48
S3CB519
MAC816
ENOP
Format: Operation: Flags:
-- No operation
ENOP No operation No operation
21-49
MAC816
S3CB519
ENORM
Format:
-- Normalization step
ENORM : Am If [15] == [14], << 1, RP0 RP0+1 when is A or B. If [15] == [14], {,C} <<1, RP0 RP0+1 when is AC or BC. C: Z: V: N: [15] ^ [14] set if result is zero. Reset if not reset to zero. set if the MSB of result is 1. Reset if not
Operation:
Flags:
21-50
S3CB519
MAC816
ENORMT --
Format:
Normalization step conditional
ENORMT : Am If T=1, then same as ENORM, else no operation If T=1, then same as ENORM, else no operation
Operation: Flags:
21-51
MAC816
S3CB519
ER
-- Bit Reset
ER bs bs 0 ES resets the specified bit.
Format: Operation:
21-52
S3CB519
MAC816
ERL --
Format:
Rotate Left
ERL : Am {[14:0],[15]}, C [15] when Am is A or B. {[14:0],C}, C [15] when Am is AC or BC. ERL rotates the value of to the left and stores the result back into . The original MSB of is copied into carry (C). C: Z: V: N: set if the MSB of (before shifting) is 1. Reset if not set if result is zero. Reset if not reset to zero. set if the MSB of result is 1. Reset if not
Operation:
Flags:
21-53
MAC816
S3CB519
ERLT
Format:
-- Rotate Left conditional
ERLT : Am If T=1, then same as ERL, else no operation If T=1, then same as ERL, else no operation
Operation: Flags:
21-54
S3CB519
MAC816
ERND
Format: Operation:
-- Round off
ERND MA MA[31:16] MA[31:16] + MA[15], MA[15:0] 0 ERND adds 0x8000 to the lower 16-bit position of MA and stores the result in MA. MV: set if overflow is generated. Reset if not
Flags:
21-55
MAC816
S3CB519
ERPM
Format: Operation:
-- Modify Ram pointer
ERPM rpm rpi modified rpi ERPM modifies a rpi by rpm.
It does not generate a cycle of RAM access.
NOTE:
21-56
S3CB519
MAC816
ERR
Format:
-- Rotate Right
ERR : Am {[0], [15:1]}, C [0] when Am is A or B. {C, [15:1]}, C [0] when Am is AC or BC. RR rotates the value of to the right and stores the result back into . The original LSB of is copied into carry (C). C: Z: V: N: set if the LSB of (before shifting) is 1. Reset if not set if result is zero. Reset if not reset to zero. set if the MSB of result is 1. Reset if not
Operation:
Flags:
21-57
MAC816
S3CB519
ERRT
Format:
-- Rotate Right conditional
ERRT : Am If T=1, then same as ERR, else no operation If T=1, then same as ERR, else no operation
Operation: Flags:
21-58
S3CB519
MAC816
ES
-- Bit Set
ES bs bs 1 ES sets the specified bit.
Format: Operation:
21-59
MAC816
S3CB519
ESEC0 / ESEC1 / ESEC2
Format: ESEC0 #imm:4 ESEC1 #imm:4 ESEC2 #imm:4 ESEC0: SEC0[3:0] #imm:4 ESEC1: SEC1[3:0] #imm:4 ESEC2: SEC2[3:0] #imm:4
-- Set SECi
Operation:
21-60
S3CB519
MAC816
ESL --
Format:
Shift Left
ESL :Am {[14:0],0}, C [15] when is A or B. {[14:0],C}, C [15] when is AC or BC. ESL shifts to the left by 1 bit. The MSB of the original is copied into carry(C). C: Z: V: N: set if the MSB of (before shifting) is 1. Reset if not set if result is zero. Reset if not set if overflow is generated. Reset if not. exclusive OR of V and MSB of result.
Operation:
Flags:
21-61
MAC816
S3CB519
ESLT
Format:
-- Shift Left conditional
ESLT : Am If T=1, then same as ESL, else no operation If T=1, then same as ESL, else no operation
Operation: Flags:
21-62
S3CB519
MAC816
ESR
Format:
-- Shift Right
ESR :Am {[15],[15:1]}, C [0] when is A or B. {C,[15:1]}, C [0] when is AC or BC. ESR shifts to the right by 1 bit. The LSB of the original is copied into carry(C). C: Z: V: N: set if the LSB of (before shifting) is 1. Reset if not set if result is zero. Reset if not set to zero set if result is negative. Reset if not
Operation:
Flags:
21-63
MAC816
S3CB519
ESRT
Format:
-- Shift Right conditional
ESRT : Am If T=1, then same as ESR, else no operation If T=1, then same as ESR, else no operation
Operation: Flags:
21-64
S3CB519
MAC816
ESUB
Format:
-- Subtract
ESUB , : Am : adr:6, @rpm, Ai, Mreg, #imm:16, #imm:5 + ~ +1 when is A or B. + ~ +C when is AC or BC. ESUB adds the values in and the 2's complement of , to perform subtraction on and . C: Z: V: N: set if the borrow of result is zero. Reset if not. set if result is zero. Reset if not. set if overflow is generated. Reset if not. exclusive OR of V and MSB of result.
Operation:
Flags:
NOTE:
If is B, can not be #imm:5.
21-65
MAC816
S3CB519
ESUBT
Format:
-- Subtract conditional
ESUBT , : Am : @rpm, Ai, MAH, MAL If T=1, then same as ESUB, else no operation If T=1, then same as ESUB, else no operation
Operation: Flags:
21-66
S3CB519
MAC816
ETST
Format:
-- Test Condition
ETST cc cc: Z, NZ, C, NC, NEG, POS, V1, V0, GT, LE, MV1, MV0 T test result ETST tests the specified condition of a flag. T: set if test result is true. Reset if not
Operation:
Flags:
21-67
MAC816
S3CB519
NOTES
21-68
S3CB519
ELECTRICAL DATA
22
OVERVIEW
(TA = 25 C) Parameter Supply voltage Input voltage Output voltage Output current high
ELECTRICAL DATA
Table 22-1. Absolute Maximum Ratings
Symbol VDD VI VO IOH
Conditions - - - One I/O pin active All I/O pins active
Rating -0.3 to + 6.5 -0.3 to VDD + 0.3 -0.3 to VDD + 0.3 -18 -60 + 30 + 100 -25 to + 85 -65 to + 150
Unit V V V mA
Output current low
IOL
One I/O pin active Total pin current for port
mA
Operating temperature Storage temperature
TA TSTG
- -
C C
Table 22-2. D.C. Electrical Characteristics (TA = -25 C to + 85 C, VDD = 2.2 V to 5.5 V) Parameter Operating voltage Symbol VDD Conditions fxx = 8.2 MHz fxx = 4.1 MHz Input high voltage VIH1 VIH2 Input low voltage VIL1 VIL2 All input pins except VIH2 XIN, XTIN All input pins except VIL2 XIN, XTIN Min 3.0 2.2 0.8 VDD VDD-0.1 - - 0.2 VDD 0.1 V Typ - - - Max 5.5 5.5 VDD V Unit V
22-1
ELECTRICAL DATA
S3CB519
Table 22-2. D.C. Electrical Characteristics (Continued) (TA = -25 C to + 85 C, VDD = 2.2 V to 5.5 V) Parameter Output high voltage Symbol VOH1 VOH2 Conditions VDD = 5 V; IOH = -1 mA All output pins except VOH2 VDD = 5 V; IOH = -15 mA Port 5 Output low voltage Input high leakage current VOL1 ILIH1 ILIH2 Input low leakage current ILIL1 ILIL2 Output high leakage current Output low leakage current Pull-up resistor ILOH ILOL RL1 VDD = 4.5-5.5 V; IOL = 15 mA VIN = VDD All input pins except ILIH2 VIN = VDD XIN, XTIN, XOUT, XTOUT VIN = 0 V All input pins except ILIL2 VIN = 0 V XIN, XTIN, XOUT, XTOUT, nRESET VOUT = VDD All I/O pins and Output pins VOUT = 0 V All I/O pins and Output pins VIN = 0 V; VDD = 5 V 10% All port, TA = 25 C VIN = 0 V; VDD = 5 V 10% TA = 25 C, nRESET only 30 50 70 k - - - - 3 -3 -20 - - - - 0.4 - 2 3 V A Min VDD-1.0 VDD-1.0 Typ - Max - Unit V
-
-
20
-3
RL2
110
210
310
22-2
S3CB519
ELECTRICAL DATA
Table 22-2. D.C. Electrical Characteristics (Concluded) (TA = -25 C to + 85 C, VDD = 2.2 V to 5.5 V) Parameter |V DD-COMi| voltage drop (I=0-15) |V DD-SEGi| voltage drop (I=0-55) LCD voltage dividing resistor Total contrast resistor VLC Output voltage RLCD1 RLCD2 RCNST VLC1 VLC2 VLC3 VLC4 VLC5 Supply current (1) IDD1 Run mode; VDD = 5 V 10% 6 MHz crystal oscillator 4 MHz crystal oscillator VDD = 3 V 10% 6 MHz crystal oscillator 4 MHz crystal oscillator Idle mode: VDD = 5 V 10 % 6 MHz crystal oscillator 4 MHz crystal oscillator Idle mode: VDD = 3 V 10 % 6 MHz crystal oscillator 4 MHz crystal oscillator Sub-run mode; VDD = 3 V 10 % Main stop, 32 kHz sub-osc. Sub-idle mode; VDD = 3 V 10 % Main stop, 32 kHz Stop mode; VDD = 5 V 10 %, TA = 25C VDD = 3 V 10 %, TA = 25C
NOTE:
Symbol VDC
VDS
Conditions VDD = 2.7 to 5.5 V -15 uA per common pin LCNST = 00000000b VDD = 2.7 to 5.5 V -15 uA per segment pin LCNST = 00000000b VLCD = 2.7 to 5.5 V; LCON.3 = 0 VLCD = 2.7 to 5.5 V; LCON.3 = 1 VLCD = 2.7 to 5.5 V; LCNST = 10000000b VLCD = 2.7 to 5.5 V LCD clock = 0 Hz LCNST = 00000000b
Min -
Typ -
Max 120
Unit mV
-
-
120
mV
40 20 -
V DD-0.2 0.8V DD-0.2 0.6V DD-0.2 0.4V DD-0.2 0.2V DD-0.2
55 28 140
V DD 0.8 V DD 0.6 V DD 0.4 V DD 0.2 V DD
70 35 -
V DD+0.2 0.8V DD+0.2 0.6V DD+0.2 0.4V DD+0.2 0.2V DD+0.2
k
V
-
4 2.7 2 1.3 1.2 1.0 0.5 0.4 17 4.8 0.2
8 5.4 4 2.6 2.5 2.0 1.5 1.0 34 10 3
mA
-
mA
IDD2
-
mA
mA
IDD3 IDD4 IDD5
- - -
A A A
0.1
2
Supply current does not include current drawn through internal pull-up resistors or external output current loads and ADC, DAC, BLD, LCD voltage dividing resistor.
22-3
ELECTRICAL DATA
S3CB519
Table 22-3. A.C. Electrical Characteristics (TA = -25 C to + 85 C, VDD = 2.2 V to 5.5 V) Parameter Interrupt input high, low width nRESET input low width
NOTE:
Symbol tINTH, tINTL tRSL P0, P1 VDD = 5 V
Conditions
Min -
Typ 200
Max -
Unit ns s
VDD = 5 V 10 %
5
-
-
User must keep a larger value than the min value.
tINTL
tINTH
0.8 VDD 0.2 VDD
Figure 22-1. Input Timing for External Interrupts (Port 0, Port 1)
tRSL
nRESET 0.2 VDD
Figure 22-2. Input Timing for nRESET
22-4
S3CB519
ELECTRICAL DATA
Table 22-4. Data Retention Supply Voltage in Stop Mode (TA = -25 C to + 85 C) Parameter Data retention supply voltage Data retention supply current Symbol VDDDR IDDDR VDDDR = 2.2 V Conditions - Min 2.2 - Typ - - Max 5.5 2 Unit V A
nRESET Occur
Stop Mode Data Retention Mode
Oscillation Stabilization Time Normal Operating Mode
~ ~ ~ ~
VDD
VDDDR Execution of STOP Instruction nRESET 0.2VDD tWAIT
NOTE: tWAIT is same as 2048 x 32 x 1/fxx
Figure 22-3. Stop Mode Release Timing When Initiated by a nRESET
22-5
ELECTRICAL DATA
S3CB519
OSC Start up time
Oscillation Stabilization Time Normal Operating Mode
~ ~ ~ ~
Stop Mode Data Retention
VDD
VDDDR Execution of STOP Instruction INT 0.2 VDD tWAIT NOTE: tWAIT is same as 2048 x 32 x 1/fxx. The value of 2048 which is selected for the clock source of the basic timer can be changed. And then the value of tWAIT will be changed.
Figure 22-4. Stop Mode (Main) Release Timing Initiated by Interrupts
OSC Start up time
Oscillation Stabilization Time
~ ~ ~ ~
Stop Mode Data Retention
Normal Operating Mode
VDD
VDDDR Execution of STOP Instruction INT 0.2 VDD tWAIT NOTE: tWAIT is same as 256 x 32 x 1/fxx. The oscillator strat up time is less than 100 ms. The value of 256 which is selected for the clock source of basic timer must be kept within this value.
Figure 22-5. Stop Mode (Sub) Release Timing Initiated by Interrupts
22-6
S3CB519
ELECTRICAL DATA
Table 22-5. Synchronous SIO Electrical Characteristics (TA = -25 C to + 85 C, VDD = 4.5 V to 5.5 V, VSS = 0 V, fxx = 10 MHz oscillator ) Parameter SCK Cycle time Serial Clock High Width Serial Clock Low Width Serial Output data delay time Serial Input data setup time Serial Input data Hold time Symbol tCYC tSCKH tSCKL tOD tID tIH Conditions - - - - - - Min 200 60 60 - 40 100 Typ - - - - - - Max - - - 50 - - Unit ns
tCYC tSCKL tSCKH
SCK 0.8 VDD 0.2 VDD tID tIH 0.8 VDD SI Input Data 0.2 VDD tOD
SO
Output Data
Figure 22-6. Serial Data Transfer Timing
22-7
ELECTRICAL DATA
S3CB519
Table 22-6. BLD Electrical Characteristics (TA = 25 C, VDD = 2.2 V to 5.5 V, VSS = 0 V) Parameter BLD Voltage Symbol VB0 VB1 VB2 VB3 VB4 VB5 VB6 External Input mode, VDD = 2.2 V-3.0 V VB7 External Input mode, VDD = 3.0 V-5.5 V BLD Current BLD Response
NOTE:
Conditions Internal VDD mode
Min Typ-0.15
Typ 2.4 2.7 3.0 3.3
Max Typ+0.15
Unit V
Typ-0.3
4.0 4.5
Typ+0.3
Typ-0.15
1.2
Typ+0.15
Typ-0.3
1.2
Typ+0.3
IBLD TB
VDD = 5.5 V VDD = 5.5 V
- -
50 1/fw (note)
100 -
A s
The fw must be greater than 10 sec.
Table 22-7. ADC Electrical Characteristics (TA = -25 C to + 85 C, VDD = 3.0 V to 5.5 V, VSS = 0 V) Parameter ADC Current Sampling Frequency Resolution Symbol IADC - - VDD = 3.3 V - Measurement Bandwidth: 20 Hz-4 kHz, Full scale input sine wave: 1 kHz, Sampling frequency: 8 kHz Conditions Min - - - Typ 1.5 8 14 Max 3 11 - Unit mA kHz bits
Signal to Distortion ratio Offset Error Input Voltage Range
NOTE:
- - - VDD = 3.3 V
70 - -
75 - 2
- 20 -
dB mV VPP
All the data in this ADC characteristics is measured in the condition of VDD = 3.3 V
22-8
S3CB519
ELECTRICAL DATA
Table 22-8. DAC Electrical Characteristics (TA = -25 C to + 85 C, VDD = 2.4 V to 5.5 V, VSS = 0 V) Parameter DAC Current Resolution Absolute Accuracy Differential Linearity Error Output Delay Output Load Resistance Output Level (peak to peak) Regulator Bias voltage Output Interval Symbol IDAC - - DLE - Ro - - - TA = -30 C to + 60 C VDD = 3.3 V OSC = 4.096 MHz; AD/DA clock input = 8 kHz Conditions VDD = 5.5 V - Min - - -3 -1.5 - - 1.2 - - Typ 1.5 8 - - - 10 1.5 VDD/2 31 Max 3.0 - 3 1.5 250 - 1.88 - - Unit mA bits LSB LSB s k VPP V s
22-9
ELECTRICAL DATA
S3CB519
Table 22-9. Main Oscillator Frequency (fOSC1) (TA = -25 C to + 85 C VDD = 2.2 V to 5.5 V) Oscillator Crystal/Ceramic Clock Circuit
XIN XOUT
Test Condition VDD = 2.2 V-5.5 V
Min 0.4
Typ -
Max 4.1
Unit MHz
C1
C2
VDD = 2.5 V-5.5 V VDD = 3.0 V-5.5 V External clock
XIN XOUT
6.2 8.2 0.4 - 4.1 MHz
VDD = 2.2 V-5.5 V
VDD = 2.5 V-5.5 V VDD = 3.0 V-5.5 V RC
XIN XOUT
6.2 8.2 - 2 - MHz
R = 20 Kohm, VDD = 5 V
NOTE:
Oscillation frequency and Xin input frequency data are for oscillator characteristics only.
Table 22-10. Main Oscillator Clock Stabilization Time (TST1) (TA = -25 C + 85 C, VDD = 4.5 V to 5.5 V) Oscillator Crystal Ceramic Test Condition VDD = 4.5 V to 5.5 V Stabilization occurs when VDD is equal to the minimum oscillator voltage range. VDD = 4.5 V to 5.5 V XIN input high and low level width (t XH, tXL) Min - - Typ - - Max 10 4 Unit ms ms
External clock
NOTE:
50
-
-
ns
Oscillation stabilization time (TST1) is the time required for the CPU clock to return to its normal oscillation frequency after a power-on occurs, or when Stop mode is ended by a nRESET signal.
22-10
S3CB519
ELECTRICAL DATA
1/fosc1 tXL tXH
XIN
VDD - 0.1 V 0.1 V
Figure 22-7. Clock Timing Measurement at XIN
Table 22-11. Sub Oscillator Frequency (fOSC2) (TA = -25 C + 85 C, VDD = 2.2 V to 5.5 V) Oscillator Crystal Clock Circuit
XT IN XTOUT R C1 C2
Test Condition Crystal oscillation frequency C1 = 22 pF, R = 39 k C2 = 33 pF
Min 32
Typ 32.768
Max 35
Unit kHz
NOTE:
Oscillation frequency and XTin input frequency data are for oscillator characteristics only.
Table 22-12. Sub Oscillator (Crystal) Start up Time (tST2) (TA = -25 C + 85 C, VDD = 2.2 V to 5.5 V) Oscillator Normal mode Test Condition VDD = 4.5 V to 5.5 V VDD = 2.2 V to 4.5 V Strong mode VDD = 3.0 V to 5.5 V VDD = 2.2 V to 3.0 V
NOTE:
Min - - - -
Typ 1 - - -
Max 2 10 6 2
Unit sec
Oscillation stabilization time (tST2) is the time required for the oscillator to it's normal oscillation when stop mode is released by interrupts.
22-11
ELECTRICAL DATA
S3CB519
fxx 10 MHz 8 MHz 6 MHz B A C
4 MHz
0.4 MHz 1 2 3 4 5 6 7
Supply Voltage (V) Minimum instruction clock = 1/(1 x oscillator frequency) A = 2.2 V: 4.1 MHz B = 2.5 V: 6.2 MHz C = 3.0 V: 8.2 MHz
Figure 22-8. Operating Voltage Range
22-12
S3CB519
MECHANICAL DATA
23
OVERVIEW
MECHANICAL DATA
The S3CB519 microcontroller is currently available in a 100-pin QFP and TQFP package.
23-1
MECHANICAL DATA
S3CB519
23.90 0.30 20.00 0.20 0-8
+ 0.10
0.15 - 0.05
17.90 0.30
14.00 0.20
100-QFP-1420C
0.10 MAX
(0.83)
#100
#1 0.65
0.30
+ 0.10 - 0.05
0.15 MAX
0.05 MIN (0.58) 2.65 0.10 3.00 MAX
0.10 MAX 0.80 0.20
NOTE : Dimensions are in millimeters.
Figure 23-1. 100-QFP-1420C Package Dimensions
23-2
0.80 0.20
S3CB519
MECHANICAL DATA
16.00 0.20 14.00 0-7 0.127
+ 0.073 - 0.037
16.00 0.20
14.00
100-TQFP-1414
0.08 MAX
#100
#1 0.50
+ 0.07
0.20 - 0.03 0.08 MAX 0.05-0.15 (1.00) 1.00 0.05 1.20 MAX
NOTE: Dimensions are in millimeters.
Figure 23-2. 100-TQFP-1414 Package Dimensions
0.45-0.75
23-3
MECHANICAL DATA
S3CB519
NOTES
23-4
S3CB519
DEVELOPMENT TOOLS
24
OVERVIEW
DEVELOPMENT TOOLS
Samsung provides a powerful and easy-to-use development support system in turnkey form. The development support system is configured with a host system, debugging tools, and support software. For the host system, any standard computer that operates with windows95/98/NT as its operating system can be used. One type of debugging tool including hardware and software is provided: the effective cost and powerful in-circuit emulator, InvisibleMDS, for CalmRISC8. Samsung also offers support software that includes debugger, Compiler, Assembler, and a program for setting options. CALMSHINE: IDE(INTEGRATED DEVELOPMENT ENVIRONMENT) CalmRISC8 Samsung Host Interface for In-circuit Emulator, CalmSHINE, is a multi window based debugger for CalmRISC8. CalmSHINE provides pull-down, pop-up and tool-bar menus, mouse support, function/hot keys, syntax highlight, tool-tip, drag-and-drop and context-sensitive hyper-linked help. It has an advanced, multiple-windowed user interface that emphasizes ease of use. Each window can be sized, moved, scrolled, highlighted, added or removed, docked or undocked completely. INVISIBLE MDS: IN-CIRCUIT EMULATOR The evaluation chip of CalmRISC8 has a basic debugging utility block. Using this block, evaluation chip directly interfaces with host through only communication wire. So, InvisibleMDS offers simple and powerful debugging environment. CALMRISC8 C-COMPILER: CALM8CC The CalmRISC8 Compiler offers the standard features of the C language, plus many extensions for MCU applications, such as interrupt handling in C and data placement controls, designed to take fully advantage of CalmRISC8 facilities. It conforms to the ANSI specification. It supports standard library of functions applicable to MCU systems. The standard library also conforms to the ANSI standard. It generates highly size-optimized code for CalmRISC8 by fully utilizing CalmRISC8 architecture. It is available in a Windows version integrated with the CalmSHINE. CALMRISC8 RELOCATABLE ASSEMBLER: CALM8ASM The CalmRISC8 Assembler is a relocatable assembler for Samsung's CalmRISC8 MCU and its MAC816 and MAC2424 coprocessors. It translates a source file containing assembly language statements into a relocatable machine object code file in Samsung format. It runs on WINDOWS95 compatible operating systems. It supports macros and conditional assembly. It produces the relocatable object code only, so the user should link object files. Object files can be linked with other object files and loaded into memory. CALMRISC8 LINKER: CALM8LINK The CalmRISC8 Linker combines Samsung object format files and library files and generates absolute, machinecode executable hex programs or binary files for CalmRISC8 MCU and its MAC816 and MAC2424 coprocessors. It generates the map file, which shows the physical addresses to which each section and symbol is bounded, start addresses of each section and symbol, and size of them. It runs on WINDOWS95 compatible operating systems.
24-1
DEVELOPMENT TOOLS
S3CB519
EMULATION PROBE BOARD CONFIGURATION
PWR
TP3 Single input
TP2
TP1
Differential input CN1 CN2 2 51 52
POWER
JP1 0 Power on/off JP9
JP 5 JP 6 JP 7 JP 8
1 Sub X-TAL Main X-TAL
1 53
VCC
TP4
GND
S3EB510
JP4
157 105
Invisible MDS
SRAM SW1 SRAM
U10 U2 49 50 99 100
EP-B519
SM1402A
NOTES: 1. Unit: mm 2. SW1: reset 3. Power: power input (5V/500mA) 4. ADGAIN, AVREFOUT, ADINN, ADINP signals are not connected with CN1/CN2. If you make an ADC application, refer to Figure 24-1 and use that circuit block. Also you can refer to Figure 19-2 A/D converter block diagram for AVREFOUT, AVDD, AVSS, REFH, REFL.
Figure 24-1. Emulation Probe Board Configuration Invisible MDS Connector = 10-pin/normal Pitch (2.54mm) Pin No. 1 2 3 4 5 Pin Name VDD PNTRST_NINIT PTCK_MCLK PTMS PTDI_RxD Pin No. 6 7 8 9 10 Pin Name PTD0_TxD GND UCLK JTAGSEL -
24-2
S3CB519
DEVELOPMENT TOOLS
EXTERNAL EVENT INPUT HEADERS (JP4) These input headers are used to add the break condition to the core status externally when the break using CalmBreaker occurs in the evaluation chip.
EXT_BK EVACHIP_EXTBK[0] EVACHIP_EXTBK[1] EVACHIP_EXTBK[2] EVACHIP_EXTBK[3] EXT_BK0 EXT_BK1 EXT_BK2 EXT_BK3
EVENT MATCH OUTPUT HEADERS (JP9) Four event match signals and one combination event signal are occurred by the CalmBreaker in the evaluation chip. These signals are transmitted through the evaluation chip.
EVMAT EVACHIP_EXTBK[0] EVACHIP_EXTBK[1] EVACHIP_EXTBK[2] EVACHIP_EXTBK[3] EVMAT0 EVMAT1 EVMAT2 EVMAT3
EXTERNAL BREAK INPUT HEADERS (TP4) This input pin is used to break during the evaluation chip run.
EVACHIP_BKREQX
BKREQX
24-3
DEVELOPMENT TOOLS
S3CB519
A/D CONVERTER FUNCTION BLOCK
Differential-ended Input Application VDD TP1 D1 Analog Signal Input TP2 Analog Signal Input R21 ADINN C31 R19 D3 GND C29 = 470 pF C31 = 470 pF R16 = 390 k R18 = 110 k R20 = 47 k R22 = 220 k C30 = 22 pF C32 = 22 pF R17 = 47k R19 = 390 k R21 = 220k C32 R20 D4 R22 ADGAIN D2 ADINP C29 R16 R17 R18 C30 S3EB510 AVREFOUT
Single-ended Input Application VDD TP3 Analog Signal Input R25 D5 ADGAIN ADINN C33 R23 D6 GND AVREFOUT C33 = 200 nF C34 = 56 pF R23 = R24 = 100 k R25 = 200 k R24 C34 S3EB510 ADINP
NOTE:
When you make some application board, you must use this circuit block.
Figure 24-2. A/D converter Function Block Diagram
24-4
S3CB519
DEVELOPMENT TOOLS
COMMUNICATION SELECTION JP5-JP8 State
JP8 Single JP7 JP6 JP5
Description When differential-ended input application is used for the ADC, JP5-JP8 must be set.
Differential
Differential
JP8 Single JP7 JP6 JP5
When Single-ended input application is used for the ADC, JP5-JP8 must be set.
USE CLOCK SETTING FOR EXTERNAL CLOCK MODE Proper crystal and capacitors for main clock should be inserted into pin socket on the IE Board as follows;
C XIN Y2 XOUT C
X-Tal
SUB CLOCK SETTING For sub-clock mode a crystal, 32.768 kHz and capacitors should be inserted into pin socket on the IE Board as follows;
C XT IN Y1 XT OUT R X-Tal C
NOTE:
The value of resistor is 39 k.
24-5
DEVELOPMENT TOOLS
S3CB519
CN1, CN2 PIN ASSIGNMENT CN1,2 are the signals of IE-B519 and their pin assignment is the same as the pin of S3CB519. CN1 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 Function P4.1/COM9 P4.3/COM11 P4.5/COM13 P4.7/COM15 P0.1 P0.3 P0.5 VDD NC NC NC DAC NC NC NC NC P1.1 P1.3 P2.1/SEG54 P2.3/SEG54 P2.5/SEG54 P2.7/SEG54 P3.1/SEG54 P3.3/SEG54 P3.5/SEG54 CN1 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 Function P4.2/COM10 P4.4/COM12 P4.6/COM14 P0.0 P0.2 P0.4 P0.6 VSS NC NC RSSETB EXT NC NC NC NC P1.0 P1.2 P2.0/SEG55 P2.2/SEG53 P2.4/SEG51 P2.6/SEG49 P3.0/SEG47 P3.2/SEG45 P3.4/SEG43 P3.6/SEG41 CN2 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 Function P3.7/SEG40 P5.1/SEG38 P5.3/SEG36 P5.5/SEG34 P5.7/SEG32 P5.9/SEG30 P5.11/SEG28 P5.13/SEG26 P5.15/SEG24 SEG22 SEG20 SEG18 CKSEG16 PDSEG14 PDSEG12 PDSEG10 PDSEG8 PDSEG6 PDSEG4 PDSEG2 PDSEG0 COM1 COM3 COM5 COM7 CN2 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 Function P5.0/SEG39 P5.2/SEG37 P5.4/SEG35 P5.6/SEG33 P5.8/SEG31 P5.10/SEG29 P5.12/SEG27 P5.14/SEG25 SEG23 SEG21 SEG19 SEG17 PDSEG15 PDSEG13 PDSEG11 PDSEG9 PDSEG7 PDSEG5 PDSEG3 PDSEG1 COM0 COM2 COM4 COM6 P4.0/COM8
24-6


▲Up To Search▲   

 
Price & Availability of S3CB519

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X